KB2519358 - KHẮC PHỤC: Lỗi "Giá trị số nguyên nằm ngoài phạm vi" khi bạn truyền một giá trị bigint làm đối số last_sync_version của hàm CHANGETABLE trong SQL Server 2008 hoặc trong SQL Server 2008 R2

Áp dụng cho
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express

Microsoft phân phối các bản sửa lỗi Microsoft SQL Server 2008 Gói dịch vụ 1 (SP1) và Microsoft SQL Server 2008 R2 như một tệp có thể tải xuống. Vì các bản sửa lỗi mang tính tích lũy, mỗi bản phát hành mới đều chứa tất cả các hotfix và tất cả bản sửa lỗi bảo mật được tích hợp với bản phát hành sửa lỗi SQL Server 2008 SP1 và SOL Server 2008 R2 trước đó.

Triệu chứng

Hãy cân nhắc các trường hợp sau:

  • Bạn bật chức năng theo dõi thay đổi trên một bảng trong SQL Server 2008 hoặc SQL Server 2008 R2.

  • Bạn chạy một truy vấn sử dụng hàm CHANGETABLE cùng với đối số last_sync_version để trả về thông tin theo dõi cho các thay đổi đã xảy ra trong bảng.

  • Một giá trị bigint được truyền làm đối số last_sync_version.

Ví dụ: bạn chạy truy vấn sau sau khi bật chức năng theo dõi thay đổi trên bảng:

SELECT * FROM CHANGETABLE(changes dbo.t1, 2222222222) as ct

Trong kịch bản này, quá trình thực thi truy vấn không thành công và bạn nhận được thông tin sau đây:

Lưu ý

Thông báo 1080, Mức 15, Trạng thái 1, Dòng 1
Giá trị số nguyên mà giá trị bigint nằm ngoài dải.

Ghi chú

  • Kiểu đối số last_sync_version được xác định là bigint. Do đó, truy vấn dự kiến sẽ chạy thành công.
  • Giá trị bigint là chỗ dành sẵn đại diện cho giá trị bigint được đưa vào làm đối số last_sync_version.

Giải pháp

Thông tin cập nhật tích lũy

SQL Server 2008 R2 Gói Dịch vụ 1

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật tích lũy 1 cho SQL Server 2008 R2 Gói Dịch vụ 1. Để biết thêm thông tin về cách lấy gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

2544793 Gói Cập nhật Tích lũy 1 cho SQL Server 2008 R2 Gói Dịch vụ 1Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 R2 trước đó. Chúng tôi khuyên bạn nên cân nhắ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 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 Gói Dịch vụ 1 được phát hành

SQL Server 2008 Gói Dịch vụ 2

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật tích lũy 4 dành cho SQL Server 2008 Gói Dịch vụ 2. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

2527180 Gói cập nhật tích lũy 4 cho SQL Server 2008 Gói Dịch vụ 2Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi mới 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:

2402659 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 2 được phát hành Các hotfix Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng hotfix SQL Server 2008 Gói Dịch vụ 2 cho cài đặt SQL Server 2008 Gói Dịch vụ 2. Theo mặc định, mọi hotfix được cung cấp trong gói dịch vụ SQL Server sẽ được đưa vào gói dịch vụ SQL Server tiếp theo.

SQL Server 2008 R2

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật Tích lũy 7. Để biết thêm thông tin về cách lấy gói cập nhật tích lũy này cho SQL Server 2008 R2, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

2507770 Gói Cập nhật Tích lũy 7 cho SQL Server 2008 R2 Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả bản hotfix và tất cả bản sửa lỗi bảo mật được tích hợp trong bản phát hành bản sửa lỗi SQL Server 2008 R2 trước đó. Chúng tôi khuyên bạn nên cân nhắ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:

981356 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 được phát hành
Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật tích lũy 13. Để biết thêm thông tin về cách lấy gói cập nhật tích lũy này cho SQL Server 2008 SP1, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

2497673 Gói cập nhật tích lũy 13 cho SQL Server 2008 Gói Dịch vụ 1
Lưu ý Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật được tích hợp với bản phát hành bản sửa lỗi SQL Server 2008 SP1 trước đó. Chúng tôi khuyên bạn nên cân nhắ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:

970365 Các bản dựng SQL Server 2008 được phát hành sau SQL Server 2008 Gói Dịch vụ 1 được phát hành

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".

Giải pháp thay thế

Để xử lý vấn đề này, hãy tạo một biến thuộc loại bigint, sau đó chuyển biến đó làm đối số last_sync_version của hàm CHANGETABLE. Ví dụ: bạn có thể chạy thành công truy vấn sau:

DECLARE @v3 bigint = 2222222222
SELECT * FROM CHANGETABLE(changes dbo.t1, @v3 ) as ct

Xem thêm thông tin

Để biết thêm thông tin về hàm CHANGETABLE cho Transact-SQL, hãy truy cập trang web Mạng lưới Phát triển Microsoft (MSDN) sau đây:

Thông tin chung về hàm CHANGETABLE cho Transact-SQL