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.

Theo mặc định, gói dịch vụ 1 cho SQL Server 2014 và gói dịch vụ 3 cho SQL Server 2012 bao gồm khắc phục sự cố này và bạn không có thêm bất kỳ cờ theo dõi để kích hoạt bản vá. Để cho phép khắc phục sự cố sau khi bạn cài đặt một bản Cập Nhật tích luỹ trong phần giải pháp, bạn phải khởi động Microsoft SQL Server bằng cách thêm cờ theo dõi 1236 tham số khởi động.

Triệu chứng

Giả sử rằng bạn chạy phiên bản của Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 hay SQL Server 2008 R2 trên một máy tính có nhiều bộ xử lý. Khi số khóa (nguyên loại = cơ sở dữ liệu) cho cơ sở dữ liệu cụ thể vượt quá ngưỡng nhất định, bạn gặp phải sự cố hoạt động sau:

  • Nâng cao giá trị xảy ra do LOCK_HASH spinlock tính.

    Lưu ý Hãy xem phần "Thông tin thêm" để biết thông tin về cách theo dõi spinlock này.

  • Truy vấn hoặc hoạt động yêu cầu cơ sở dữ liệu khóa mất nhiều thời gian để hoàn tất. Ví dụ: bạn có thể thấy sự chậm trễ hoạt động sau:

    • Thông tin đăng nhập máy chủ SQL

    • Truy vấn máy chủ được liên kết

    • sp_reset_connection

    • Giao dịch

Lưu ý Để xác định danh sách các khóa (nguyên loại = cơ sở dữ liệu) trên cơ sở dữ liệu nhất định, hãy xem phần "Thông tin". Giá trị ngưỡng thay đổi theo môi trường.

Mỗi bản cập nhật tích lũy mới cho SQL Server chứa tất cả các bản cập nhật nóng và tất cả các bản sửa lỗi bảo mật đi kèm với bản cập nhật tích lũy trước đó. Kiểm tra các bản cập nhật tích lũy mới nhất cho SQL Server:


Thông tin về cập nhật nóng
Cập nhật nóng được hỗ trợ do Microsoft cung cấp. Tuy nhiên, cập nhật nóng này chỉ được dùng để khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng cập nhật nóng này cho hệ thống đang gặp sự cố cụ thể này.

Nếu cập nhật nóng này sẵn có để tải xuống, có phần "Tải xuống Hotfix sẵn có" ở đầu bài viết Cơ sở Kiến thức này. Nếu phần này không xuất hiện, hãy gửi một yêu cầu tới bộ phận Hỗ trợ và Dịch vụ Khách hàng của Microsoft để nhận hotfix.

Lưu ý Nếu các sự cố xảy ra hoặc nếu bất cứ xử lý sự cố là cần thiết, bạn có thể phải tạo một yêu cầu dịch vụ riêng. Chi phí hỗ trợ thông thường sẽ áp dụng cho các câu hỏi hỗ trợ bổ sung và các vấn đề không phù hợp với hotfix cụ thể này. Để có danh sách đầy đủ số điện thoại hỗ trợ và dịch vụ khách hàng của Microsoft hoặc để tạo yêu cầu dịch vụ riêng, hãy ghé thăm website sau của Microsoft:

http://support.microsoft.com/contactus/?ws=supportLưu ý "Tải xuống Hotfix sẵn có" Hiển thị các ngôn ngữ mà hotfix này sẵn có. Nếu bạn không thấy ngôn ngữ của mình thì đó là do cập nhật nóng này hiện không có ngôn ngữ đó.

Trạng thái

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

Thông tin

Khi một ứng dụng kết nối với SQL Server, nó lần đầu tiên cung cấp một bối cảnh cơ sở dữ liệu. Theo mặc định, kết nối sẽ cố gắng lấy một khóa cơ sở dữ liệu ở chế độ SH. Khóa SH cơ sở dữ liệu sẽ được phát hành khi kết nối bị dừng hoặc bối cảnh cơ sở dữ liệu được thay đổi thời kết nối. Nếu bạn có nhiều kết nối hoạt động sử dụng bối cảnh cơ sở dữ liệu tương tự, bạn có thể khoá nhiều loại cơ sở dữ liệu nguồn cơ sở dữ liệu cụ thể đó.

Trên máy tính có 16 hoặc nhiều CPU, chỉ mục các đối tượng sử dụng chương trình phân hoạch khoá. Tuy nhiên, cơ sở dữ liệu khóa không phân vùng. Do đó, khoá số cơ sở dữ liệu lớn hơn, còn có cho SQL Server để nhận một khóa cơ sở dữ liệu. Hầu hết các ứng dụng không gặp bất kỳ vấn đề do thiết kế. Tuy nhiên, khi số vượt quá ngưỡng nhất định, việc bổ sung và thời gian phải có khóa. Mặc dù chi phí chỉ vi giây cho mỗi khoá bổ sung, tổng thời gian có thể nhanh chóng tăng do khoá băm nhóm được bảo vệ bằng cách sử dụng một spinlock. Này gây ra các CPU chu kỳ và chờ đợi cho các chương trình bổ sung để có được khóa.

Hotfix này giới thiệu cơ sở dữ liệu khóa phân khi cờ theo dõi T1236 được kích hoạt khi khởi động. Phân vùng khóa cơ sở dữ liệu của danh khóa giúp quản lý trong mỗi phân vùng địa phương. Điều này đáng kể tối ưu hóa đường truy cập được sử dụng để lấy khóa cơ sở dữ liệu .

Giám sát LOCK_HASH spinlock, bạn có thể sử dụng truy vấn sau đây.SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,
[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)
DECLARE @counter int = 1
WHILE @counter < 100
BEGIN
INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH'
WAITFOR DELAY '00:00:05'
SET @counter +=1
END
SELECT * FROM #spinlock_stats ORDER BY [CaptureTime]
DROP TABLE #spinlock_stats
Để biết thêm thông tin về chẩn đoán và giải quyết spinlock tranh trên SQL Server, hãy truy cập tài liệu sau:

Chẩn đoán và giải quyết tranh Spinlock trên máy chủ SQLLưu ý Mặc dù tài liệu này được viết cho SQL Server 2008 R2, thông tin sẽ vẫn áp dụng cho SQL Server 2012.

Tham khảo

Để biết thêm thông tin về cờ theo dõi SQL Server 2012, hãy truy cập vào trang web TechNet sau đây:

Thông tin về cờ theo dõi SQL Server 2012
Để biết thêm thông tin về cách tìm số khóa cơ sở dữ liệu người sử dụng một cơ sở dữ liệu, sử dụng truy vấn sau đây để tính toán giá trị này:select Resource_database_id, resource_type, request_mode, request_status, count (*) 'LockCount' from sys.dm_tran_locks
group by Resource_database_id, resource_type, request_mode, request_status


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!

×