Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Khắc phục: Chậm hiệu suất hoặc bế tắc khi bạn khôi phục lại bộ máy cơ sở dữ liệu và thực hiện báo cáo cùng một lúc trong SQL Server 2012

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 2725950
Microsoft phân phối Microsoft SQL Server 2012 bản sửa lỗi như là một tải về tệp. Bởi vì các bản sửa lỗi 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 sửa lỗi bảo mật mà được đính kèm với trước SQL Server 2012 sửa chữa phát hành.
Triệu chứng

Kịch bản 1

Hãy xem xét kịch bản sau đây:
  • Bạn khôi phục lại bộ máy cơ sở dữ liệu Microsoft SQL Server 2012.
  • Trước khi kết thúc hoạt động Khôi phục bộ máy cơ sở dữ liệu, một tiến trình tài liệu tham khảo quan cửa hàng sys.database_recovery_status và yêu cầu một ổ khóa trên bộ máy cơ sở dữ liệu tương tự. Ví d ụ, bạn thực hiện các tuyên bố chọn sau:

    SELECT * FROM sys.database_recovery_status
Trong trường hợp này, chậm hiệu suất xảy ra trong đó một quá trình tuyên bố chọn waits cho đến khi kết thúc quá trình Khôi phục bộ máy cơ sở dữ liệu.

Kịch bản 2

Hãy xem xét kịch bản sau đây:
  • Bạn khôi phục lại bộ máy cơ sở dữ liệu SQL Server 2012.
  • Trước khi kết thúc hoạt động Khôi phục bộ máy cơ sở dữ liệu, bạn có thể thực hiện các tuyên bố sau:

    IF EXISTS (SELECT * FROM sys.database_recovery_status WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
    Lưu ý Các DataBaseID đại diện cho ID của bộ máy cơ sở dữ liệu mà bạn thực hiện thao tác Khôi phục bộ máy cơ sở dữ liệu.
Trong trường hợp này, một bế tắc xảy ra trong quá trình Khôi phục bộ máy cơ sở dữ liệu. Bế tắc này gây ra quá trình Khôi phục bộ máy cơ sở dữ liệu không thành công.
Nguyên nhân
Hai kịch bản được mô tả trong phần "Triệu chứng" được gây ra do cùng nguyên nhân.

Trong phần "Scenario1", vấn đề xảy ra vì quá trình Khôi phục bộ máy cơ sở dữ liệu đòi hỏi một khóa độc quyền trên bộ máy cơ sở dữ liệu. Khi bạn thực hiện các báo cáo được đề cập trong phần đó, một khóa dùng chung là cần thiết vào bộ máy cơ sở dữ liệu tương tự. Vì vậy, chia sẻ khóa waits cho khóa độc quyền cho đến khi các khóa độc quyền được phát hành.

Trong phần "Kịch bản 2", khi bạn thực hiện các báo cáo được đề cập trong phần đó, một khóa dùng chung là cần thiết vào bộ máy cơ sở dữ liệu tương tự và trên bảng sys.sysdbreg . Ở giai đoạn cuối của quá trình Khôi phục bộ máy cơ sở dữ liệu, quá trình này đòi hỏi một khóa Cập Nhật bảng sys.sysdbreg . Tuy nhiên, các khóa chia sẻ không được phát hành từ bộ máy cơ sở dữ liệu. Vì vậy, một bế tắc xảy ra trên bảng sys.sysdbreg , và quá trình Khôi phục bộ máy cơ sở dữ liệu được xác định là nạn nhân bế tắc.

Giải pháp

Cumulative update Cập nhật thông tin

Cumulative update Cập Nhật gói 1 cho SQL Server 2012 Service Pack 1

Sửa chữa cho vấn đề này lần đầu tiên được phát hành trong Cumulative Update 1. Để biết thêm chi tiết về làm thế nào để có được điều này gói cumulative update cho SQL Server 2012 Service Pack 1, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
2765331 Cumulative update Cập Nhật gói 1 cho SQL Server 2012 Service Pack 1
Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả các sửa lỗi bảo mật mà được đính kèm với trước SQL Server 2012 sửa chữa phát hành. Chúng tôi khuyên bạn hãy xem xét việc áp dụng sửa chữa phát hành gần đây nhất có chứa hotfix này. Để biết thêm chi tiết, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
2772858 SQL Server 2012 xây dựng mà đã được phát hành sau khi SQL Server 2012 Service Pack 1 đã được phát hành

Cumulative update Cập Nhật gói 3 cho SQL Server 2012

Sửa chữa cho vấn đề này lần đầu tiên được phát hành trong Cumulative Update 3. Để biết thêm chi tiết về làm thế nào để có được điều này gói cumulative update cho SQL Server, bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
2723749 Cumulative update 3 cho SQL Server 2012
Lưu ý Bởi vì các bản xây dựng tích lũy, mỗi sửa chữa mới phát hành chứa tất cả các hotfix và tất cả các sửa lỗi bảo mật mà được đính kèm với trước SQL Server 2012 sửa chữa phát hành. Chúng tôi khuyên bạn hãy xem xét việc áp dụng sửa chữa phát hành gần đây nhất có chứa hotfix này. Để biết thêm chi tiết, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
2692828 SQL Server 2012 xây dựng mà đã được phát hành sau khi SQL Server 2012 được phát hành
Tình trạng
Microsoft đã xác nhận rằng đây là một vấn đề trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Cách giải quyết khác
Để làm việc xung quanh vấn đề này trong kịch bản 2, sử dụng một trong những phương pháp sau đây.
Phương pháp 1


Sửa đổi tuyên bố để tránh các ổ khóa được chia sẻ trên sys.sysdbreg bảng bằng cách sử dụng gợi ý "NOLOCK".
IF EXISTS (SELECT * FROM sys.database_recovery_status with(NOLOCK) WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
Phương pháp 2
Đặt mức ưu tiên bế tắc của tuyên bố để "Thấp."
SET DEADLOCK_PRIORITY LOWIF EXISTS(SELECT * FROM sys.database_recovery_status where database_id = DataBaseID AND database_guid IS NOT NULL)
Lưu ý Khi bạn sử dụng phương pháp thứ hai để tránh bế tắc trong tuyên bố và trong quá trình Khôi phục bộ máy cơ sở dữ liệu, các mã trong tuyên bố nếu không sẽ được thực hiện.
Tham khảo
Để biết thêm chi tiết về độc quyền khóa, khóa được chia sẻ và Cập Nhật khóa, hãy vào web site MSDN sau đây:Để biết thêm thông tin, mô hình bản ghi dịch vụ gia tăng cho SQL Server, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
935897 Một mô hình bản ghi dịch vụ gia tăng là có sẵn từ đội SQL Server để cung cấp hotfixes cho báo cáo vấn đề
Để biết thêm chi tiết về lược đồ đặt tên cho SQL Server Cập Nhật, bấm số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
822499 Các lược đồ đặt tên cho gói cập nhật phần mềm Microsoft SQL Server
Để biết thêm chi tiết về thuật ngữ Cập nhật phần mềm, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
824684 Mô tả thuật ngữ chuẩn được sử dụng để mô tả Cập nhật phần mềm Microsoft

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 2725950 - Xem lại Lần cuối: 11/20/2012 23:17:00 - Bản sửa đổi: 2.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Web

  • kbtshoot kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2725950 KbMtvi
Phản hồi