Tôi đang sử dụng một sản phẩm chạy trên SQLServer 2008. Có thể hiểu rằng công ty cung cấp nó không cung cấp hỗ trợ SQLServer. Khi tôi cài đặt sản phẩm, tôi đã chỉ định mật khẩu để mã hóa cơ sở dữ liệu. Tôi muốn chạy một bản sao khác của sản phẩm để thử nghiệm trên một máy chủ khác. Tôi đã khôi phục cơ sở dữ liệu sang máy chủ khác và cài đặt sản phẩm trên máy chủ khác đó. Khi tôi cài đặt, tôi đã cung cấp cùng một mật khẩu và sau đó khôi phục bản sao lưu từ máy chủ chính. Tuy nhiên, tôi nhận được thông báo lỗi:
System.Data.SqlClient.SqlException: An error occurred during decryption.
từ sản phẩm. Tôi có thể truy cập các bảng bằng cách sử dụng SQLServer Management studio.
Tôi đã thử điều này:
trên máy chủ đầu tiên:
CREATE CERTIFICATE cert1 WITH SUBJECT = 'Certificate for my stuff'
BACKUP CERTIFICATE cert1 TO FILE = 'd:\backup\cert1.dat'
WITH PRIVATE KEY
(
ENCRYPTION BY PASSWORD = 'mypassword',
FILE = 'd:\backup\cert1_privatekey.dat'
)
trên máy chủ thứ hai:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mypassword'
CREATE CERTIFICATE cert1 FROM FILE = 'd:\cert1.dat'
WITH PRIVATE KEY
(
FILE = 'd:\cert1_privatekey.dat',
DECRYPTION BY PASSWORD = 'mypassword'
)
Tôi cũng đã thử điều này trên máy chủ thứ hai:
alter MASTER KEY regenerate with enCRYPTION BY PASSWORD='password'
nhưng điều đó đã đưa ra một thông báo lỗi về một khóa không đối xứng.
Làm cách nào tôi có thể khôi phục bản sao lưu từ máy chủ đầu tiên lên máy chủ thứ hai?
Cập nhật:
Có một khóa bất đối xứng và đối xứng trong cơ sở dữ liệu. Nếu tôi mở khóa đối xứng bằng khóa bất đối xứng, tôi cũng gặp lỗi tương tự, vì vậy tôi nghĩ đó là lý do tại sao nó không hoạt động - bằng cách nào đó, các phím không chuyển theo cách mà chúng có thể được sử dụng.