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 đã bật mã hóa dữ liệu trong suốt (TDE) có thể gây ra lỗi sau:
Msg 3241, Cấp 16, Tiểu bang 18, Line <LineNumber>
Dòng phương tiện trên thiết bị '<tên tệp sao>' được hình thành không chính xác. SQL Server không thể xử lý dòng phương tiện này.
Cách giải quyết
Để tránh vấn đề này, không nén các bản sao lưu của cơ sở dữ liệu cho phép TDE bằng cách sử dụng một trong hai phương pháp sau đây:
-
Sử dụng WITH COMPRESSION như được mô tả trong BACKUP (Transact-SQL).
-
Dựa vào nén sao lưu mặc định như được mô tả trong Dạng xem hoặc Cấu hình tùy chọn cấu hình máy chủ mặc định né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 cho SQL Server:
Bản cập nhật tích lũy 16 dành cho SQL Server 2019
Chú ý 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ố. Cài đặt CU cố định trên phiên bản đích và cố gắng khôi phục lại bản sao lưu tương tự được tạo mà không có bản sửa lỗi sẽ không hoạt động.
Thông tin Bổ sung
Quan trọng: Bắt đầu từ SQL Server 2019 CU16, việc tạo 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 mà chỉ có thể khôi phục được trên phiên bản đã cài đặt CU16 trở lên.
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 CU15 hoặc phiên bản cũ hơn của SQL Server 2019 không thành công và gây ra các lỗi sau:
-
KHÔI PHỤC CƠ SỞ DỮ LIỆU
Msg 3013, Cấp 16, Tiểu bang 1, Số Dòng <Số Dòng>
KHÔI PHỤC CƠ SỞ DỮ LIỆU đang 1 cách bất thường.
Msg 9004, Cấp 21, Bang 1, Số Dòng <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 một bản sao lưu không có sẵn, nó có thể là cần thiết để xây dựng lại các nhật ký.
-
KHÔI PHỤC NHẬT KÝ
Vị trí: mediaRead.cpp:1018
Biểu thức: đọc <= m_Demand
SPID: 84
ID Quy trình: ProcessID
Msg 3013, Cấp 16, Tiểu bang 1, Số Dòng <Số Dòng>
RESTORE LOG đang tái phát bất thường.
Msg 3624, Cấp 20, Tiểu bang 1, Số Dòng <Số Dòng>
Không kiểm tra hiển thị được yêu cầu hệ thống. Kiểm tra nhật ký lỗi SQL Server để biết chi tiết. Thông thường, lỗi xác nhận là do lỗi phần mềm hoặc hỏng dữ liệu. Để kiểm tra lỗi cơ sở dữ liệu, hãy cân nhắc việc chạy DBCC CHECKDB. Nếu bạn đồng ý gửi bãi cho Microsoft trong quá trình thiết lập, bãi chứa mini sẽ được gửi đến Microsoft. Bản cập nhật có thể có sẵn từ Microsoft trong Gói Dịch vụ mới nhất hoặc trong Bản cập nhật nóng từ Bộ phận Hỗ trợ Kỹ thuật.
Chú ý KHÔI PHỤC HEADERONLY và RESTORE FILELISTONLY không bị ảnh hưởng bởi sự cố và sẽ hoạt động trong mọi trường hợp.
KHÔI PHỤC VERIFYONLY có thể trở về thành công cho bản sao lưu FULL không hợp lệ theo trường hợp ở trên: không dựa vào KHÔI PHỤC VERIFYONLY để thiết lập sao lưu có thể được khôi phục mà không gặp sự cố ở trên. KHÔI PHỤC VERIFYONLY dựa trên bản sao lưu nhật ký thường sẽ không hoạt động cùng với lỗi tương tự như 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 mà TDE và Nén Sao lưu có thể được bật, mọi phiên bản SQL Server 2019 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. Log shipping architectures would be a prime example of such situation: upgrade secondary instances first.
Sau khi sao lưu nhật ký giao dịch đã được tạo bằng chức năng nén, thường là không thể tạo lại nó 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 ngữ cảnh như vậy sẽ phá vỡ công việc khôi phục cho đến khi máy chủ thứ cấp cũng được nâng cấp.
Bản sao lưu không nén của cơ sở dữ liệu hỗ trợ 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 không 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 dự định khôi phục tài liệu cơ sở dữ liệu cho phép TDE (sao lưu đầy đủ hoặc sao lưu nhật ký giao dịch) cho mọi phiên bản SQL Server của các phiên bản cũ hơn trước SQL Server 2019 CU16.
Mỗi bản cập nhật tích lũy mới cho SQL Server đều chứa tất cả các bản cập nhật nóng và bản sửa lỗi bảo mật có 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:
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".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.