Applies ToSQL Server 2008 Service Pack 4 SQL Server 2008 R2 Service Pack 3

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?

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