2012-06-08 48 views
5

Tôi không thể xóa một số tác vụ của tác nhân SQL Server. Trạng thái tác vụ tiếp tục chạy và lệnh vẫn nằm trong KILLED/ROLLBACK. Công việc thực hiện các truy vấn đối với hệ thống PI của OSI thông qua máy chủ được liên kết OLEDB và Oracle. Cách duy nhất tôi đã tìm thấy cho đến nay để giết những công việc này là bằng cách khởi động lại máy chủ SQL (không phải là một phương pháp ưa thích).không thể giết công việc máy chủ SQL, trạng thái vẫn bị giết/khôi phục

Trả lời

1

Nếu chúng là giao dịch lớn, có thể máy chủ thực sự vẫn đang thực hiện quá trình khôi phục có thể mất chút thời gian.

+0

Không, chúng là giao dịch khá nhỏ. (<10 bản ghi) – Ahd

+0

Tùy thuộc vào cách "bận" các bảng bị ảnh hưởng là việc khôi phục có thể mất một thời gian ngay cả đối với một số lượng nhỏ các bản ghi bị ảnh hưởng. –

+1

Điều này đã được chờ hơn một giờ trong trạng thái này ngay bây giờ. Ngay cả khi các bảng đang bận (mà họ không phải là) nó cần phải có giải quyết ngay bây giờ. – Ahd

3

tôi thấy bài viết sau đây https://connect.microsoft.com/SQLServer/feedback/details/187192/openquery-to-linked-server-hangs-leaving-spid-with-open-tran-that-cannot-be-killed-then-templog-ldf-grows-without-limit-requires-sql-server-restart-on-production-servers

Rõ ràng nhiều người có vấn đề này sử dụng OPENQUERY qua một máy chủ liên kết đó không phải là SQL Server. Tôi reposting công việc xung quanh mà BReuter đăng trên bài viết ở trên:

đăng bởi BReuter trên 2007/01/30 tại 14:21 * Tôi đã đã gặp hành vi chính xác và đã tìm thấy một sự kết hợp của phần mềm đã ổn định môi trường của chúng ta.

Có ba thành phần chính tôi thấy:

1) Hãy chắc chắn rằng bạn không có bất kỳ máy chủ liên kết sử dụng Microsoft cung cấp OLEDB cho Oracle, thay vì sử dụng Oracle cung cấp cho Oracle (phiên bản 9.2.0.4 là những gì tôi có trong sản xuất).

2) Không cho phép máy chủ được liên kết chạy "đang xử lý". Điều này đã mất một số nghiên cứu, nhưng nó có thể chạy máy chủ được liên kết ra khỏi không gian bộ nhớ SQL bằng cách làm theo các hướng dẫn dưới đây.

3) Tôi đang chạy SQL 2005 SP1 trên W2K3, nhưng tôi tin rằng OLEDB Provider là chìa khóa chứ không phải là phiên bản hệ điều hành hoặc phiên bản DB. Các thiết lập bảo mật mặc định quá chặt chẽ để chạy nhà cung cấp Oracle OLEDB (OraOLEDB) ngoài quy trình. Hơn nữa, các thiết lập mặc định cho MS DTC không cho phép truyền thông mạng.

  1. Control Panel-> Administrative Tools-> Các dịch vụ Component
  2. khoan để Component Services-> Máy tính

    a. Kích chuột phải vào My dụng vi tính> Properties

  3. MSDTC tab -> nút Security Configuration (hình dưới đây)

    a. Truy cập DTC mạng - được chọn.

    b. Cho phép Inbound/Outbound - được chọn.

    c. Không yêu cầu xác thực - Điều này mô phỏng các cài đặt bảo mật windows 2000.

    d. Bật giao dịch XA - loại giao dịch được thực hiện bởi nhà cung cấp OraOLEDB.

  4. khoan để Component Services-> Computers-> dụng vi tính của tôi> DCOM Config

    a. Kích chuột phải vào MSDAINITALIZE-> Properties

  5. tab Security (hình dưới đây)

    a. Quyền truy cập -> Tùy chỉnh.

    b. Nhấn nút Edit "Quyền truy cập".

    c. Cấp quyền truy cập "Truy cập cục bộ" cho tài khoản Dịch vụ SQL Server.

    d. Lặp lại cho “Launch và kích hoạt”. *

+0

Lưu ý: Vấn đề của tôi cũng liên quan đến máy chủ được liên kết với Oracle. Tôi đang sử dụng trình điều khiển 11.2. – Ahd

0

cho tôi giết chết các nguồn lực bên ngoài OLEDB không làm việc và tôi không may đã phải khởi động lại dụ SQL server để khắc phục vấn đề này luôn

i trường hợp của tôi nó có chọn với OPENQUERY từ các máy chủ oracle liên kết hoặc danh sách SharePoint mà chỉ đơn giản có một lỗi đơn giản như mật khẩu xấu và nó không thể giải quyết các lỗi và đi và không bao giờ quay trở lại cho đến khi bạn khởi động lại dịch vụ

0

các giao dịch gặp khó khăn trong giết/ROLLBACK có thể hủy bằng cách giết các giao dịch trên máy chủ cục bộ. Nếu truy vấn là cross-server và bạn không muốn chờ đợi cho rollback, bạn phải đi đến máy chủ từ xa và giết giao dịch cũng như giết nó trên máy chủ địa phương.

Điều này áp dụng cho bất kỳ hệ thống cơ sở dữ liệu nào.

1

Trang này http://www.jaygeiger.com/index.php/2015/03/03/how-to-kill-a-frozen-linked-sql-server-connection/ cung cấp một workaround. Nó bao gồm trong kết nối TCP thủ công kết thúc. Nó không phải là một giải pháp lý tưởng nhưng đó là giải pháp tốt nhất mà tôi biết. Nó tốt hơn là phải khởi động lại toàn bộ SQL Server.

Btw. Tôi tìm thấy liên kết đó tại https://connect.microsoft.com/SQLServer/feedback/details/187192/openquery-to-linked-server-hangs-leaving-spid-with-open-tran-that-cannot-be-killed-then-templog-ldf-grows-without-limit-requires-sql-server-restart-on-production-servers trang được đề cập trong Bài đăng của Ahd

Các vấn đề liên quan