KB2300689 - KHẮC PHỤC: Bạn không thể khôi phục bản sao lưu của cơ sở dữ liệu trên một phiên bản khác của SQL Server nếu bạn tắt mã hóa dữ liệu trong suốt trước khi tạo bản sao lưu trong SQL Server 2008 hoặc SQL Server 2008 R2

Áp dụng cho
SQL Server 2008 Service Pack 2 SQL Server 2008 R2

Microsoft phân phối các bản sửa lỗi Microsoft SQL Server 2008 và Microsoft SQL Server 2008 R2 như 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, mỗi bản phát hành mới đều chứa toàn bộ hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành sửa lỗi SQL Server 2008 hoặc SQL Server 2008 R2 trước đó.

Triệu chứng

Hãy cân nhắc các trường hợp sau:

  • Bạn sử dụng mã hóa dữ liệu rõ ràng trên cơ sở dữ liệu trong SQL Server 2008 hoặc Microsoft SQL Server 2008 R2.
  • Bạn tắt mã hóa cho cơ sở dữ liệu đó.
  • Bạn sao lưu cơ sở dữ liệu ngay sau khi tắt mã hóa.
  • Bạn tìm cách khôi phục cơ sở dữ liệu trên một phiên bản khác của SQL Server bằng cách sử dụng bản sao lưu.

Trong trường hợp này, thao tác khôi phục không thành công và bạn sẽ nhận được thông báo lỗi giống như sau:

Lưu ý

System.Data.SqlClient.SqlError: Tệp "<tên cơ> sở dữ liệu_log" không khởi tạo được chính xác. Kiểm tra nhật ký lỗi để biết thêm chi tiết. (Microsoft.SqlServer.Smo)

Tuy nhiên, nhật ký lỗi không có chi tiết.

Nếu bạn loại bỏ khóa mã hóa cho cơ sở dữ liệu trước khi sao lưu cơ sở dữ liệu, bạn sẽ nhận được thông báo lỗi sau đây khi tìm cách khôi phục cơ sở dữ liệu:

Lưu ý

System.Data.SqlClient.SqlError: Không thể tìm thấy chứng chỉ máy chủ có hình thu nhỏ '0xCB62FF76463A6BF86E8F769B541BA6483AFC2FF2'. (Microsoft.SqlServer.Smo)

Giải pháp

Thông tin cập nhật tích lũy

SQL Server 2008 Gói Dịch vụ 1

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật tích lũy 10 dành cho SQL Server 2008 Gói Dịch vụ 1. Để 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:

2279604 Gói cập nhật tích lũy 10 cho SQL Server 2008 Gói Dịch vụ 1Lưu ý 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 đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có 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 bản 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:

970365 Các bản dựng SQL Server 2008 được phát hành sau khi SQL Server 2008 Gói Dịch vụ 1 được phát hành Các hotfix 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 hotfix SQL Server 2008 Gói Dịch vụ 1 cho cài đặt SQL Server 2008 Gói Dịch vụ 1. Theo mặc định, mọi hotfix được cung cấp trong gói dịch vụ SQL Server sẽ được đưa vào gói dịch vụ SQL Server tiếp theo.

SQL Server 2008 Gói Dịch vụ 2

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Bản cập nhật tích lũy 1 cho 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:

2289254 Cập nhật tích lũy 1 cho SQL Server 2008 Gói Dịch vụ 2Lưu ý 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 đều chứa tất cả các hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành sửa lỗi SQL Server 2008 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây 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

SQL Server 2008 R2

Bản sửa lỗi cho sự cố này được phát hành lần đầu trong Cập nhật Tích lũy 4. Để biết thêm thông tin về cách lấy 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:

2345451 Gói Cập nhật Tích lũy 4 cho SQL Server 2008 R2 Lưu ý 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 đều chứa tất cả các bản hotfix và tất cả bản sửa lỗi bảo mật có trong bản phát hành bản sửa lỗi SQL Server 2008 R2 trước đó. Chúng tôi khuyên bạn nên cân nhắc áp dụng bản phát hành bản sửa lỗi gần đây 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 Các bản dựng SQL Server 2008 R2 được phát hành sau khi SQL Server 2008 R2 được phát hành

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".

Các bước để tái tạo vấn đề

  1. Tạo khóa chính. Sau đây là mẫu mã tạo khóa chính:

    use master
    Create Master Key encryption by password = 'Password01!';
    go
    
  2. Tạo hoặc lấy chứng chỉ được bảo vệ bởi khóa chính. Sau đây là mẫu mã tạo ra chứng chỉ được bảo vệ bằng khóa chính:

    create certificate cert_testDB_encryptDEK  authorization dbo
    with subject='Certificate to encrypt the DEK of testDB'
    
  3. Tạo cơ sở dữ liệu mới, tạo khóa mã hóa cơ sở dữ liệu, rồi bảo vệ khóa bằng chứng chỉ. Sau đây là mẫu mã tạo cơ sở dữ liệu mới, tạo khóa mã hóa cơ sở dữ liệu, rồi bảo vệ khóa bằng cách sử dụng chứng chỉ:

    create Database testDB
    use testDB
    Create database encryption key 
    with algorithm=AES_128
    encryption by server certificate cert_testDB_encryptDEK  
    
    
  4. Đặt cơ sở dữ liệu để sử dụng mã hóa. Sau đây là mẫu mã thiết lập một cơ sở dữ liệu để sử dụng mã hóa:

    Alter database testDB set encryption on 
    
    
  5. Tắt mã hóa cho cơ sở dữ liệu. Sau đây là mẫu mã tắt mã hóa cho cơ sở dữ liệu:

    Alter database testDB set encryption off 
    
    
  6. Sao lưu cơ sở dữ liệu, sau đó khôi phục bản sao lưu trên một phiên bản khác của SQL Server.

Tham khảo

Để biết thêm thông tin về Mã hóa Dữ liệu Minh bạch (TDE), hãy truy cập trang web Mạng lưới Nhà phát triển Microsoft (MSDN) sau:

Thông tin chung về TDE Để biết thêm thông tin về Mô hình Dịch vụ Gia tăng cho SQL Server, 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:

935897 Mô hình Dịch vụ Gia tăng có sẵn từ nhóm SQL Server để cung cấp các bản sửa lỗi nóng cho các sự cố được báo cáo

Để biết thêm thông tin về sơ đồ đặt tên cho các bản cập nhật SQL Server, 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:

822499 Giản đồ đặt tên mới cho các gói cập nhật phần mềm Microsoft SQL Server Để biết thêm thông tin về thuật ngữ cập nhật phần mềm, 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:

824684 Mô tả thuật ngữ chuẩn được sử dụng để miêu tả các bản cập nhật phần mềm của Microsoft