Triệu chứng
Khi bạn chạy một truy vấn có chứa dữ liệu đối tượng lớn (LOB) để tải vào một biến đổi Transact-SQL trong Microsoft SQL Server 2008, Microsoft SQL Server 2012 hoặc Microsoft SQL Server 2008 R2, tham nhũng dữ liệu xảy ra. Ví dụ, bạn chạy truy vấn sau đây để sao chép dữ liệu XML từ một cột cơ sở dữ liệu thành một biến XML: Declare @OUTXML as XMLSELECT @OUTXML = DataXml FROM Table_1 WHERE id=1 Trong trường hợp này, câu lệnh Select sẽ chạy khi các chủ đề khác tìm cách Cập Nhật cùng một cột XML. Hành vi này có thể gây ra dữ liệu bị hỏng. Ngoài ra, bạn nhận được một trong các thông báo lỗi sau đây khi thực hiện bất kỳ thao tác đọc và ghi nào trên cột XML bị lỗi:
-
Loại dữ liệu XML bị hỏng.
-
Kết thúc không mong muốn của tệp đã xảy ra.
Lưu ý́
-
Vấn đề này thường xảy ra trong các thao tác tải có đồng thời cao.
-
Khi bạn sử dụng một đại diện trình đọc Nhật ký để đọc dữ liệu XML bị lỗi từ một bảng là một phần của danh sách bài viết Ấn phẩm cho các bản sao của giao dịch, bạn nhận được thông báo lỗi sau đây:
Loại dữ liệu XML bị hỏng. (Nguồn: MSSQLServer, số lỗi: 6611)
Nguyên nhân
Sự cố này xảy ra vì một khóa trên cột dữ liệu LOB được phát hành trước dữ liệu LOB được sao chép từ cột cơ sở dữ liệu vào biến kiểu dữ liệu LOB. Bất kỳ truy vấn đồng thời nào cũng có thể cập nhật dữ liệu LOB cùng trước khi quá trình sao chép hoàn tất trong quá trình sao chép. Do đó, tham nhũng dữ liệu xảy ra.
Giải pháp
Thông tin Cập Nhật tích lũy
Cập Nhật tích lũy 7 cho SQL Server 2012
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong bản Cập Nhật tích lũy 7. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy cho SQL Server 2012, hãy bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
2823247 Gói Cập Nhật tích lũy 7 cho SQL Server 2012Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản phát hành khắc phục SQL Server 2012 trước đó. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2692828 Bản dựng SQL Server 2012 đã được phát hành sau khi SQL Server 2012 đã được phát hành
Bản Cập Nhật tích lũy 12 cho SQL Server 2008 R2 gói dịch vụ 1
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong bản Cập Nhật Cumulative 12. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy cho SQL Server 2008 R2 gói dịch vụ 1, hãy bấm số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
2828727 Gói Cập Nhật tích lũy 12 cho SQL Server 2008 R2 gói dịch vụ 1Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật được đưa vào bản phát hành SQL Server 2008 R2 gói dịch vụ trước đó 1. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2567616 Bản dựng SQL Server 2008 R2 đã được phát hành sau khi SQL Server 2008 R2 Service Pack 1 đã được phát hành
Bản Cập Nhật tích lũy 10 cho SQL Server 2008 gói dịch vụ 3
Khắc phục sự cố này lần đầu tiên được phát hành trong bản Cập Nhật Cumulative Update 10. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy cho SQL Server 2008 Service Pack 3, hãy bấm số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
2814783 Gói Cập Nhật tích lũy 10 cho SQL Server 2008 gói dịch vụ 3Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật được đưa vào bản phát hành SQL Server 2008 gói dịch vụ trước đó 3. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2629969 Bản dựng SQL Server 2008 đã được phát hành sau khi SQL Server 2008 Service Pack 3 đã được phát hành
Bản Cập Nhật tích lũy 5 cho SQL Server 2008 R2 gói dịch vụ 2 (SP2)
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong bản Cập Nhật tích lũy 5. Để biết thêm thông tin về cách tải gói Cập Nhật tích lũy cho SQL Server 2008 R2 S2008 R2 SP2, hãy bấm vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
2797460 Gói Cập Nhật tích lũy 5 cho SQL Server 2008 R2 S2008 R2 SP2Lưu ý Vì bản dựng được tích lũy, mỗi bản phát hành khắc phục sự cố mới chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản phát hành SQL Server 2008 R2 S2008 R2. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành bản sửa lỗi gần đây nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2730301 Bản dựng SQL Server 2008 R2 đã được phát hành sau khi SQL Server 2008 R2 Service Pack 2 đã được phát hành
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".