Khóa chính của cơ sở dữ liệu được mã hóa bằng khóa chính của máy chủ, khóa này dành riêng cho máy có cài đặt SQL Server. Khi bạn di chuyển cơ sở dữ liệu sang một máy chủ khác, bạn sẽ mất khả năng tự động giải mã và mở khóa chính của cơ sở dữ liệu vì khóa máy chủ cục bộ rất có thể sẽ khác. Nếu bạn không thể giải mã khóa chính của cơ sở dữ liệu, bạn không thể giải mã bất kỳ thứ gì khác phụ thuộc vào nó (chứng chỉ, khóa đối xứng, v.v.).
Về cơ bản, bạn muốn mã hóa lại khóa chính của cơ sở dữ liệu so với khóa máy chủ mới, điều này có thể được thực hiện với tập lệnh này (sử dụng đặc quyền quản trị):
-- Reset database master key for server (if database was restored from backups on another server)
OPEN MASTER KEY DECRYPTION BY PASSWORD = '---your database master key password---'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO
Lưu ý rằng khi bạn tạo khóa chính cơ sở dữ liệu, bạn phải luôn cung cấp mật khẩu để có thể mở khóa bằng mật khẩu trong trường hợp không thể sử dụng khóa chính của dịch vụ - hy vọng rằng bạn đã lưu trữ mật khẩu đó ở đâu đó!
Ngoài ra, bạn có thể khôi phục bản sao lưu của khóa chính cơ sở dữ liệu - nhưng bạn cần một bản sao lưu được tạo cho máy chủ đích, không phải máy chủ nguồn.
Nếu bạn chưa có bản sao lưu hoặc mật khẩu, thì tôi không chắc bạn sẽ có thể khôi phục dữ liệu đã mã hóa trên máy chủ mới, vì bạn sẽ phải thả và tạo lại khóa chính cơ sở dữ liệu bằng mật khẩu mới, điều này sẽ loại bỏ bất kỳ khóa và dữ liệu phụ thuộc nào.