Triệu chứng
Hãy xem xét tình huống sau:
-
Bạn có một bảng Filestream rất lớn.
-
Bạn chạy truy vấn xóa các hàng trong bảng Filestream tạo một kế hoạch truy vấn đắt tiền, chẳng hạn như một trong số được lọc theo nội dung bên trong vào một bảng lớn khác trong hệ thống.
-
Trình tối ưu hóa truy vấn chọn một kế hoạch thực hiện song song.
Trong trường hợp này,một ssertion sẽ xảy ra và bạn có thể nhận được thông báo lỗi giống như sau trong Nhật ký lỗi SQL Server:
Lỗi dịch vụ SPID Dateinumber : 5553, mức độ nghiêm trọng: 20, tiểu bang: 6.
Dịch vụ SPID Dateinumber SQL Server lỗi nội bộ. Trình quản lý FILESTREAM không thể tiếp tục với lệnh hiện tại.
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Giải pháp
Sự cố đã được khắc phục trong các bản Cập Nhật tích lũy sau đây cho SQL Server:
Giới thiệu về Cập Nhật tích lũy cho SQL Server:
Mỗi bản Cập Nhật tích lũy mới cho SQL Server chứa tất cả các hotfixes và tất cả các bản sửa lỗi bảo mật được bao gồm trong phần trước Cập Nhật tích lũy. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:
Cách giải quyết
To giải quyết vấn đề này, you có thể sử dụng phương pháp sau đây:
Di chuyển truy vấn gia nhập bên trong vào một câu lệnh riêng biệt và lưu kết quả vào một bảng tạm thời. Sau đó, hãy chạy truy vấn xóa được lọc bởi các mục nhập trong bảng tạm thời. Ngoài ra, bạn có thể làm tăng giá cước chi phí cho các đường bình hành để buộc tối ưu hóa lên kế hoạch truy vấn.
Ví dụ:
CHỌN RefTable. alias vào #T từ DB. dbo. OuterTable INNER JOIN DB. dbo. RefTable trên RefTable. alias = OuterTable. alias
NƠI OuterTable. alias > 30006 và OuterTable. alias < 30010
XÓA khỏi DB. dbo. Bảng TRONG đó biệt danh (chọn * từ #T)
Tham khảo
Tìm hiểu về thuật ngữ Microsoft sử dụng để mô tả các bản cập nhật phần mềm.