Microsoft phân phối các bản sửa lỗi Microsoft SQL Server 2008 R2 Gói Dịch vụ 1 (SP1) hoặc Microsoft SQL Server 2008 hoặc Microsoft SQL Server 2012 trong một tệp có thể tải xuống. Vì các bản sửa lỗi mang tính tích lũy nên mỗi bản phát hành mới đều chứa tất cả các bản cập nhật nóng và tất cả các bản cập nhật bảo mật được tích hợp trong bản phát hành cập nhật SQL Server 2008 R2 Gói Dịch vụ 1 (SP1) hoặc SQL Server 2008 hoặc Microsoft SQL Server 2012 trước đó.
Triệu chứng
Có thể mất nhiều thời gian để khôi phục cơ sở dữ liệu trong Microsoft SQL Server 2008 R2 hoặc trong Microsoft SQL Server 2008 hoặc Trong Microsoft SQL Server 2012.
Nguyên nhân
Sự cố này xảy ra vì phải mất nhiều thời gian để xây dựng danh sách Tệp Nhật ký Ảo (VLF) khi có nhiều VLFs trong cơ sở dữ liệu.
Giải pháp
Thông tin cập nhật tích lũy
SQL Server 2012
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Bản cập nhật Tích lũy 1 SQL Server 2012. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2679368 Gói cập nhật tích lũy 1 dành cho SQL Server 2012Note Vì các bản dựng được tích lũy nên mỗi bản phát hành bản sửa lỗi mới đều chứa tất cả các 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 phát hành sửa lỗi SQL Server 2012 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2692828 Các bản dựng SQL Server 2012 được phát hành sau khi SQL Server 2012 được phát hành Bạn phải áp dụng cập nhật nóng SQL Server 2012 cho bản cài đặt SQL Server 2012.
SQL Server 2008 Gói Dịch vụ 2
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Bản cập nhật Tích lũy 8 SQL Server 2008 Gói Dịch vụ 2. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2648096 Gói cập nhật tích lũy 8 cho SQL Server 2008 Gói Dịch vụ 2Note Vì các bản dựng được tích lũy nên mỗi bản phát hành bản sửa lỗi mới chứa tất cả các cập nhật nóng và tất cả các bản sửa lỗi bảo mật được bao gồm trong bản phát hành bản sửa lỗi SQL Server 2008 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2402659 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 2 được phát hành các cập nhật nóng Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng SQL Server cập nhật nóng Gói Dịch vụ 2 2008 cho bản cài SQL Server 2008 Gói Dịch vụ 2. Theo mặc định, bất kỳ hotfix nào được cung cấp trong một SQL Server dịch vụ được bao gồm trong gói dịch SQL Server tiếp theo.
SQL Server 2008 Gói Dịch vụ 3
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Bản cập nhật Tích lũy 3 SQL Server 2008 Gói Dịch vụ 3. Để biết thêm thông tin về gói cập nhật tích lũy này, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2648098 Gói cập nhật tích lũy 3 cho SQL Server 2008 Gói Dịch vụ 3Note Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới chứa tất cả các cập nhật nóng và tất cả các bản sửa lỗi bảo mật được bao gồm trong bản phát hành bản sửa lỗi SQL Server 2008 trước đó. Microsoft khuyên bạn nên cân nhắc áp dụng bản phát hành sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2629969 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 3 được phát hành các cập nhật nóng Microsoft SQL Server 2008 được tạo cho các gói dịch vụ SQL Server cụ thể. Bạn phải áp dụng bản cập SQL Server cập nhật nóng Gói Dịch vụ 3 2008 cho bản cài SQL Server 2008 Gói Dịch vụ 3. Theo mặc định, bất kỳ hotfix nào được cung cấp trong một SQL Server dịch vụ được bao gồm trong gói dịch SQL Server tiếp theo.
Gói cập nhật tích lũy 11 dành SQL Server 2008 R2
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Bản cập nhật Tích lũy 11. Để biết thêm thông tin về cách nhận gói cập nhật tích lũy này cho SQL Server 2008 R2, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2633145 Gói cập nhật tích lũy 11 dành cho SQL Server 2008 R2Note Vì các bản dựng được tích lũy nên mỗi bản phát hành bản sửa lỗi mới 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 được bao gồm trong bản phát hành sửa lỗi SQL Server 2008 R2 trước đó. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
981356 Bản dựng SQL Server 2008 R2 mới được phát hành sau SQL Server 2008 R2 được phát hành
Gói cập nhật tích lũy 4 cho SQL Server 2008 R2 SP1
Bản sửa lỗi cho sự cố này lần đầu tiên được phát hành trong Bản cập nhật Tích lũy 4. Để biết thêm thông tin về cách nhận gói cập nhật tích lũy này cho SQL Server 2008 R2 SP1, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:
2633146 Gói cập nhật tích lũy 4 cho SQL Server 2008 R2 SP1Note Vì các bản dựng được tích lũy, mỗi bản phát hành bản sửa lỗi mới 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 được bao gồm trong bản phát hành sửa lỗi SQL Server 2008 R2 SP1 trước đó. Chúng tôi khuyên bạn nên cân nhắc việc áp dụng bản phát hành sửa lỗi mới nhất có chứa hotfix này. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:
2567616 Bản dựng SQL Server 2008 R2 mới được phát hành sau SQL Server 2008 R2 SP1 được phát hành
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".
Thông tin Bổ sung
Bạn có thể kiểm tra số lượng phân đoạn VLF bằng cách xem lại tệp nhật ký lỗi SQL và sau đó tìm số thứ tự nhật ký (LSN) trong mỗi tệp sao lưu nhật ký giao dịch. Các chữ số đầu tiên trước ký hiệu dấu hai chấm trong các LSN tương ứng với số LSN.Ví dụ, số đầu tiên trong thư thông tin đầu tiên cho LSN là 1. Tuy nhiên, số thứ nhất trong thư thông tin thứ hai cho LSN là 100001. Trong trường hợp này, có 100.000 VLFs được sử dụng giữa thời gian của thông báo thông tin đầu tiên và thư thông tin thứ hai. Vì vậy, nhật ký ghi nhật ký giao dịch bị phân mảnh có Files nhật ký ảo (VLFs) tương tự như sau:
{Log đã được sao lưu. Cơ sở dữ liệu: mydbname, ngày tạo(giờ): 2010/07/08(12:36:46), LSN đầu tiên: 1:5068:70, LSN cuối: 1:5108:1, số lượng thiết bị kết xuất: 1, thông tin thiết bị: (FILE=1, TYPE=DISK: {'C:\folder\logbackup1.trn'}). Đây chỉ là thông báo thông tin. Không yêu cầu hành động của người dùng.Log đã được sao lưu. Cơ sở dữ liệu: mydbname, ngày tạo(giờ): 2010/07/08(15:36:46), LSN đầu tiên: 100001:5108:1, LSN cuối: 100002:5108:1, số lượng thiết bị kết xuất: 1, thông tin thiết bị: (FILE=2, TYPE=DISK: {'C:\folder\logbackup2.trn'}). Đây chỉ là thông báo thông tin. Không yêu cầu hành động của người dùng.}
Tham khảo
Để biết thêm thông tin về số chuỗi nhật ký (LSN), hãy truy cập trang web MSDN sau đây:
Thông tin chung về số thứ tự nhật ký
Để biết thêm thông tin về cách cấu trúc tệp nhật ký có thể ảnh hưởng đến thời gian phục hồi cơ sở dữ liệu, hãy truy cập trang web MSDN sau đây:
Cấu trúc tệp nhật ký có thể ảnh hưởng như thế nào đến thời gian phục hồi cơ sở dữ liệu Để biết thêm thông tin về các tệp VLFs nhật ký giao dịch, hãy truy cập trang web MSDN sau đây:
Cách giải quyết
-
Chờ cho các hoạt động khôi phục hoặc phục hồi để hoàn thành Nếu bạn có một không phục hồi cơ sở dữ liệu đó là gặp phải hiệu suất chậm khi bạn khôi phục hoặc phục hồi cơ sở dữ liệu, bạn có thể phải chờ cho các hoạt động khôi phục hoặc phục hồi được hoàn thành. Ví dụ: bạn có thể thấy trạng thái ngoại tuyến hoặc trạng thái khôi phục trong SQL Server Management Studio (SSMS) đối với cơ sở dữ liệu không được khôi phục. Ngừng hoạt SQL Server thường không giúp phục hồi chậm và có thể mất nhiều thời gian hơn để lặp lại cùng một giai đoạn phân tích phục hồi, làm lại giai đoạn hoặc giai đoạn hoàn tác.
-
Tránh khôi phục chuỗi nhật ký giao dịch có chứa hàng nghìn VLFsNếu bạn gặp phải hiệu suất chậm trong khi khôi phục và khôi phục cơ sở dữ liệu bằng cách sử dụng tệp sao lưu, bạn có thể tránh việc khôi phục chuỗi nhật ký giao dịch có chứa hàng ngàn VLFs. Để xác định tệp sao lưu có hầu hết các tệp nhật ký ảo được ghi, hãy sử dụng câu lệnh sau đây để xem cột FirstLSN và LastLSN trong tệp sao lưu nhật ký: KHÔI PHỤC HEADERONLY TỪ DISK='C:\folder\file.trn'Bạn có thể quyết định tránh khôi phục các tệp sao lưu nhật ký. Hoặc bạn có thể sử dụng câu lệnh STOP AT trong lệnh RESTORE để tránh các phần rất phân mảnh của nhật ký giao dịch. Nếu bạn không khôi phục hoàn toàn trình tự nhật ký đến thời điểm mới nhất trong một kịch bản phục hồi thất bại, mất dữ liệu xảy ra trong cơ sở dữ liệu của bạn SQL Server. Mất dữ liệu này xảy ra vì không phải tất cả các giao dịch đang được giữ. Do đó, có một quyết định thương mại kinh doanh. Bạn có thể khôi phục hoàn toàn một nhật ký giao dịch rất phân mảnh. Tuy nhiên, hoạt động này có thể mất nhiều giờ. Hoặc, bạn có thể sử dụng tuyên bố STOP AT trong phục hồi để dừng phục hồi trước khi các phần rất phân mảnh của nhật ký. Tuy nhiên, bất kỳ giao dịch bị thiếu mà bạn bỏ qua sẽ bị mất.Lưu ý Nếu không cài đặt hotfix này, thường sẽ không có hoạt động an toàn để phục hồi nhanh sau khi bạn khởi động lại SQL Server. SQL Server phải xác định vị trí danh sách các VLFs để phân tích các tập tin nhật ký, để làm lại các giao dịch đã hoàn thành, và sau đó để hoàn tác các giao dịch không đầy đủ để hoàn tất phục hồi để mang lại cho các cơ sở dữ liệu trực tuyến một cách an toàn. Bạn không thể bỏ qua giao dịch một cách an toàn trong quá trình phục hồi.