Triệu chứng
Trong Microsoft SQL Server 2019, việc khôi phục cơ sở dữ liệu nén hoặc bản sao lưu nhật ký của các cơ sở dữ liệu đã được bật mã hóa dữ liệu minh bạch (TDE) có thể gây ra lỗi sau:
Lưu ý
- Thông báo 3241, Mức 16, Trạng thái 18, Số Dòng<>
- 'tên tệp> sao lưu' thuộc dòng phương tiện trên thiết bị< được định dạng không chính xác. SQL Server không thể xử lý dòng phương tiện này.
Giải pháp thay thế
Để khắc phục sự cố này, không nén các bản sao lưu của cơ sở dữ liệu hỗ trợ TDE bằng một trong các phương pháp sau:
- Sử dụng WITH COMPRESSION như được mô tả trong BACKUP (Transact-SQL).
- Dựa vào mặc định nén bản sao lưu như được mô tả trong Xem hoặc Đặt cấu hình Tùy chọn Cấu hình Máy chủ mặc định nén bản sao lưu.
Giải pháp
Thông tin cập nhật tích lũy
Sự cố này đã được khắc phục trong bản cập nhật tích lũy sau đây dành cho SQL Server:
Bản cập nhật tích lũy 16 cho SQL Server 2019
Lưu ý Bạn cần tạo các bản sao lưu cùng với bản sửa lỗi này để tránh sự cố. Việc cài đặt CU cố định trên phiên bản đích và cố gắng khôi phục cùng một bản sao lưu được tạo mà không có bản sửa lỗi sẽ không hoạt động.
Thông tin khác
Quan trọng
Bắt đầu với SQL Server 2019 CU16, việc tạo các bản sao lưu nén (cơ sở dữ liệu hoặc nhật ký) của cơ sở dữ liệu hỗ trợ TDE sẽ sử dụng định dạng sao lưu mới chỉ có thể được khôi phục trên phiên bản đã cài đặt CU16 trở lên.
Việc khôi phục bản sao lưu nén của cơ sở dữ liệu hỗ trợ TDE được tạo trên CU16 trở lên trên phiên bản SQL Server 2019 của phiên bản CU15 trở về trước không thành công và gây ra các lỗi sau:
KHÔI PHỤC CƠ SỞ DỮ LIỆU
Lưu ý
- Thông báo 3013, Mức 16, Trạng thái 1, Số Dòng<>
- KHÔI PHỤC CƠ SỞ DỮ LIỆU đang chấm dứt bất thường.
- Thông báo 9004, Mức 21, Trạng thái 1, Số Dòng<>
- Đã xảy ra lỗi trong khi xử lý nhật ký cho cơ sở dữ liệu 'TDE_DB'. Nếu có thể, hãy khôi phục từ bản sao lưu. Nếu không có bản sao lưu, có thể cần phải dựng lại nhật ký.
KHÔI PHỤC NHẬT KÝ
Lưu ý
- Vị trí: mediaRead.cpp:1018
- Biểu thức: readSize <= m_Demand
- SPID: 84
- ID Quy trình: ProcessID
- Thông báo 3013, Mức 16, Trạng thái 1, Số Dòng<>
- NHẬT KÝ KHÔI PHỤC đang chấm dứt bất thường.
- Thông báo 3624, Mức 20, Trạng thái 1, Số Dòng<>
- Kiểm tra xác nhận hệ thống không thành công. Hãy kiểm tra nhật ký lỗi SQL Server để biết chi tiết. Thông thường, lỗi xác thực là do lỗi phần mềm hoặc hỏng dữ liệu. Để kiểm tra hỏng cơ sở dữ liệu, hãy cân nhắc chạy DBCC CHECKDB. Nếu bạn đồng ý gửi kết xuất tới Microsoft trong khi thiết lập, một kết xuất mini sẽ được gửi đến Microsoft. Bản cập nhật có thể sẵn dùng từ Microsoft trong Gói Dịch vụ mới nhất hoặc trong Hotfix từ bộ phận Hỗ trợ Kỹ thuật.
Lưu ý RESTORE HEADERONLY và RESTORE FILELISTONLY không bị ảnh hưởng bởi sự cố này và sẽ hoạt động trong mọi trường hợp.
RESTORE VERIFYONLY có thể trả về thành công đối với bản sao lưu ĐẦY ĐỦ không hợp lệ theo kịch bản trên: không dựa vào RESTORE VERIFYONLY để thiết lập rằng bản sao lưu có thể được khôi phục mà không gặp phải sự cố ở trên. RESTORE VERIFYONLY đối với bản sao lưu nhật ký thường sẽ không thực hiện được cùng với cùng một lỗi với NHẬT KÝ KHÔI PHỤC thực tế được mô tả ở trên.
Do đó, điều quan trọng là phải đảm bảo rằng trong ngữ cảnh có thể bật TDE và Nén Sao lưu, bất kỳ phiên bản SQL Server 2019 nào sử dụng bản sao lưu từ các phiên bản SQL Server 2019 khác sẽ nhận được CU16 (trở lên) trước các phiên bản tạo tài liệu sao lưu. Kiến trúc vận chuyển nhật ký sẽ là ví dụ điển hình cho tình huống này: trước tiên hãy nâng cấp phiên bản phụ.
Khi đã tạo bản sao lưu nhật ký giao dịch bằng cách nén, thường thì bạn sẽ không thể tạo lại bản sao lưu mà không nén. Do đó, việc nâng cấp máy chủ chính Log Shipping lên SQL Server 2019 CU16 trở lên trong bối cảnh như vậy sẽ ngắt công việc khôi phục cho đến khi máy chủ phụ cũng được nâng cấp.
Bản sao lưu giải nén của cơ sở dữ liệu được kích hoạt TDE, bản sao lưu đã nén của cơ sở dữ liệu không được bật cho TDE hoặc bản sao lưu giải nén của cơ sở dữ liệu không được bật cho TDE sẽ không sử dụng định dạng sao lưu mới được giới thiệu trong CU16 và có thể được khôi phục trên phiên bản SQL Server 2019 của bất kỳ phiên bản nào.
Do đó, cần phải tắt nén sao lưu nếu bạn định khôi phục tài liệu cơ sở dữ liệu được kích hoạt TDE (sao lưu đầy đủ hoặc sao lưu nhật ký giao tác) cho bất kỳ phiên bản SQL Server nào của các phiên bản cũ hơn trước SQL Server 2019 CU16.
Giới thiệu về các bản cập nhật tích lũy cho SQL Server
Mỗi bản cập nhật tích lũy mới cho SQL Server chứa tất cả bản sửa lỗi nóng và bản sửa lỗi bảo mật trong bản dựng trước đó. Chúng tôi khuyên bạn nên cài đặt bản dựng mới nhất cho phiên bản SQL Server của mình:
Bản cập nhật tích lũy mới nhất cho SQL Server 2019
Trạng thái
Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft dùng để mô tả các bản cập nhật phần mềm.