Bỏ qua để tới nội dung chính
Đăng nhập với Microsoft
Đăng nhập hoặc tạo một tài khoản.
Xin chào,
Chọn một tài khoản khác.
Bạn có nhiều tài khoản
Chọn tài khoản bạn muốn đăng nhập.

Microsoft phân phối Microsoft SQL Server 2008 R2 gói dịch vụ 1 (SP1) bản sửa lỗi dưới dạng một tệp được tải xuống. Vì bản sửa lỗi được tích lũy, mỗi bản phát hành 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 sửa lỗi SQL Server 2008 trước đó 1 (SP1).

Triệu chứng

Hãy xem xét tình huống sau:

  • Bạn có cột kiểu dữ liệu datetimeoffset trong bảng trong Microsoft sql server 2008 R2 hoặc trong Microsoft sql server 2012.

  • Bạn tạo chỉ mục trên cột datetimeoffset .

  • Bạn chuyển đổi kiểu dữ liệu datetimeoffset thành kiểu dữ liệu không gian tên bằng cách dùng hàm cast hoặc Convert mà không có đối số kiểu hoặc khi giá trị của đối số kiểu là 0.

  • Kết quả của hàm cast hoặc Convert sẽ được sử dụng trong bộ lọc trong truy vấn Transact-SQL.

  • Bạn chạy truy vấn Transact-SQL.

Trong trường hợp này, kết quả được trả về bởi truy vấn không chính xác vì bộ lọc không hoạt động đúng. Ví dụ, giả định rằng cột datetimeoffset được đặt tên là "date" có chứa các giá trị sau đây:

  • 2011-05-21 23:00:00 -01:00

  • 2011-05-21 23:00:00 +00:00

  • 2011-05-21 23:00:00 +01:00

Bạn chạy truy vấn sau đây:

SELECT Date FROM TestTable WHERE CAST(Date AS smalldatetime)= '2011-05-21 23:00:00'

Kết quả của truy vấn chỉ trả về một hàng. Tuy nhiên, kết quả dự kiến sẽ trả về hàng cho cả ba giá trị.

Giải pháp

Thông tin Cập Nhật tích lũy

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 Cumulative Update 3 cho SQL Server 2012. Để biết thêm thông tin về gói Cập Nhật lũy tích này, hãy bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:

2723749 Gói Cập Nhật tích lũy 3 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 đó. Microsoft khuyên bạn nên cân nhắc việc áp dụng bản phát hành khắc phục gần đây nhất có chứa các 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 phải áp dụng một hotfix SQL Server 2012 vào một bản cài đặt của SQL Server 2012.

Gói dịch vụ SQL Server 2008 R2 2

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

2720425 Gói Cập Nhật tích lũy 1 cho SQL Server 2008 R2 gói dịch vụ 2Lư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 2008 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:

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

SQL Server 2008 R2 SP1

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 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:

2703282 Gói Cập Nhật tích lũy 7 cho SQL Server 2008 R2 SP1Lư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 SP1 đã được phát hành

Thông tin Bổ sung

Để tái tạo vấn đề này, hãy làm theo các bước sau đây:

  1. Chạy truy vấn sau đây để tạo một bảng có cột datetimeoffset và chèn một số bản ghi:CREATE TABLE #TestTimeZones (dto datetimeoffset(0)); GO INSERT INTO #TestTimeZones(dto) VALUES ('2011-05-21 23:00:00 -01:00'), ('2011-05-21 23:00:00 +00:00'), ('2011-05-21 23:00:00 +01:00'); GO

  2. Chạy truy vấn sau đây và bạn có thể thấy rằng cả ba giá trị đều được liệt kê chính xác trong kết quả trả về:DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withoutIndex FROM #TestTimeZones WHERE CAST(dto AS smalldatetime)=@t;

  3. Chạy truy vấn sau đây để tạo chỉ mục trên cột "đến" và lặp lại cùng một truy vấn:CREATE INDEX IX_testTimeZones_Dto ON #TestTimeZones(dto); GO -- Repeat the same query DECLARE @t smalldatetime = '2011-05-21 23:00:00' SELECT dto AS withIndex FROM #TestTimeZones WHERE CAST(dto A smalldatetime)=@t; GO

  4. Chạy truy vấn trong bước 2 một lần nữa. Thời gian này, truy vấn chỉ trả về một hàng.

  5. Chạy truy vấn sau đây để xóa bỏ chỉ mục và bảng mà bạn đã tạo:DROP INDEX IX_testTimeZones_Dto ON #TestTimeZones; GO DROP TALBE #TestTimeZones; GO

Tham khảo

Để biết thêm thông tin về các hàm CAST và CONVERT, hãy đi tới trang web MSDN sau đây:

Thông tin chung về các hàm CAST và CONVERT trong SQL Server

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".

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.

Thông tin này có hữu ích không?

Bạn hài lòng đến đâu với chất lượng dịch thuật?
Điều gì ảnh hưởng đến trải nghiệm của bạn?
Khi nhấn gửi, phản hồi của bạn sẽ được sử dụng để cải thiện các sản phẩm và dịch vụ của Microsoft. Người quản trị CNTT của bạn sẽ có thể thu thập dữ liệu này. Điều khoản về quyền riêng tư.

Cảm ơn phản hồi của bạn!

×