KB2448971-khắc phục sự cố: khóa của bảng không được leo thang khi bạn chèn nhiều hàng vào bảng trong SQL Server 2008 hoặc trong SQL Server 2008 R2

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.

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

Phát triển các kỹ năng của bạn
Khám phá nội dung đào tạo
Sở hữu tính năng mới đầu tiên
Tham gia Microsoft dùng nội bộ

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

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

Cảm ơn bạn đã phản hồi! Để trợ giúp tốt hơn, có lẽ chúng tôi sẽ kết nối bạn với một trong những nhân viên hỗ trợ Office của chúng tôi.

×