Triệu chứng
Hãy xem xét tình huống sau:
-
Bạn chèn nhiều hàng vào bảng trong Microsoft SQL Server 2008 hoặc trong SQL Server 2008 R2 bằng cách dùng một trong các truy vấn sau đây:
-
INSERT INTO <target_table> SELECT * FROM <target_table> WHERE <predicate>
-
SELECT * INTO <target_table> FROM <source_table> WHERE <predicate>
Lưu ý́
-
<target_table> chỗ dành sẵn đại diện cho tên bảng đích thực sự.
-
Chỗ dành sẵn >< biểu thị vị trí không thể thực hiện.
-
<source_table> chỗ dành sẵn đại diện cho bảng nguồn thực tế.
-
-
Khóa leo thang của bảng vượt quá.
Trong trường hợp này, công cụ cơ sở dữ liệu sẽ không leo lên các ổ khóa của bảng.
Nguyên nhân
Sự cố này xảy ra vì SQL Server không đếm nội bộ tất cả các khóa mới được tạo bằng cách chèn hoạt động. Do đó, ngưỡng leo thang khóa có thể không được kích hoạt khi cần thiết.
Giải pháp
Thông tin về gói dịch vụ cho SQL Server 2008
Để giải quyết sự cố này, có được gói dịch vụ mới nhất dành cho SQL Server 2008. để biết thêm thông tin, hãy bấm số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
968382 Cách tải gói dịch vụ mới nhất cho SQL Server 2008
Thông tin về gói dịch vụ cho SQL Server 2008 R2
Để giải quyết vấn đề này, có được gói dịch vụ mới nhất dành cho SQL Server 2008 R2. Để biết thêm thông tin, hãy bấm số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
2527041Cách tải gói dịch vụ mới nhất cho SQL Server 2008 R2
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".Sự cố này lần đầu tiên được sửa trong SQL Server 2008 gói dịch vụ 2 cho SQL Server 2008. sự cố này lần đầu tiên được sửa chữa trong SQL Server 2008 R2 Service Pack 1 cho SQL Server 2008 R2.
Thông tin Bổ sung
Để biết thêm thông tin về khóa leo thang, hãy truy cập trang web Microsoft TechNet sau đây:
Thông tin chung về khóa leo thangĐể xác định xem ổ khóa của bảng đang leo thang, hãy chạy câu lệnh Transact-SQL sau đây:
USE tempdbGOCREATE TABLE x (i INT NOT NULL PRIMARY KEY)GOBEGIN TRANINSERT xSELECT TOP (40000)ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS rFROM master..spt_values a, master..spt_values bORDER BYrSELECTCOUNT(*)FROM sys.dm_tran_locksWHERE request_session_id = @@SPID ROLLBACKGODROP TABLE x
Nếu các ổ khóa của bảng đang leo thang, câu lệnh SELECT cuối cùng trả về giá trị là 1 hoặc 2. Nếu các ổ khóa của bảng không được leo thang, câu lệnh SELECT cuối cùng trả về giá trị của 40.066 hoặc 40.067.