2009-07-24 30 views
25

Chạy truy vấn sau trong SQL Server Management Studio cung cấp lỗi bên dưới.Lỗi máy chủ SQL trên lệnh cập nhật - "Đã xảy ra lỗi nghiêm trọng trên lệnh hiện tại"

update table_name set is_active = 0 where id = 3 

A severe error occurred on the current command. The results, if any, should be discarded.

  • Các bản ghi đã được cắt ngắn
  • có một bản cập nhật cò nhưng điều này isnt vấn đề
  • tổng số giao dịch là zero (@@ trancount)

tôi đã thử cùng một câu lệnh cập nhật trên một vài bảng khác trong cơ sở dữ liệu và chúng hoạt động tốt.

DBCC CHECKTABLE('table_name'); 

cho

DBCC results for 'table_name'. 
There are 13 rows in 1 pages for object "table_name". 
DBCC execution completed. If DBCC printed error messages, contact your system administrator. 

Trả lời

35

Tôi chỉ có cùng một lỗi, và nó đã được xuống đến một chỉ số bị hỏng. Lập chỉ mục lại bảng đã khắc phục sự cố.

Tôi nhận thấy chủ đề này là một năm cũ, nhưng tôi nghĩ rằng nó sẽ là đáng nói đến trong trường hợp ai đó đi qua nó trong tương lai (như tôi chỉ làm).

+0

Tôi đã có lỗi chính xác giống như hôm nay. Cột ném lỗi thậm chí không liên quan đến chỉ mục bị hỏng. –

4

Run DBCC CHECKTABLE('table_name');

Kiểm tra thư mục LOG nơi isntance được cài đặt (\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG thường) cho bất kỳ tập tin có tên là 'SQLDUMP*'

+0

didnt checktable cung cấp cho bất cứ điều gì, tôi sẽ cố gắng để có được quyền truy cập vào các tệp nhật ký - cảm ơn. –

+0

Cũng thử DBCC CHECKDB (yourdb) để mở rộng việc kiểm tra toàn bộ cơ sở dữ liệu. Nếu bạn tìm thấy các tệp kết xuất, hãy xem bên trong các tệp sqldump * .txt mới hơn. –

8

Trong trường hợp của tôi, tôi đã sử dụng SubQuery và gặp sự cố tương tự. Tôi nhận ra rằng vấn đề là do rò rỉ bộ nhớ.

Khởi động lại MSSQL nguyên nhân dịch vụ tuôn ra tempDb tài nguyên và số lượng bộ nhớ khổng lồ miễn phí. vì vậy điều này đã giải quyết được vấn đề.

+0

bất kỳ giải pháp nào khác? – Amir

1

Trong trường hợp của tôi, tôi đã sử dụng System.Threading.CancellationTokenSource để hủy bỏ một SqlCommand nhưng không xử lý các ngoại lệ với catch (SqlException) { }

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