私はSQLServer 2008で動作する製品を使用しています。当然のことながら、それを提供する会社はSQLServerサポートを提供していません。製品をインストールしたときに、データベースを暗号化するためのパスワードを指定しました。別のサーバーでテストするために、製品の別のコピーを実行したいのですが。データベースを別のサーバーに復元し、その別のサーバーに製品をインストールしました。インストール時に同じパスワードを入力し、メインサーバーからバックアップを復元しました。ただし、エラーメッセージが表示されます。
System.Data.SqlClient.SqlException: An error occurred during decryption.
製品から。 SQLServer Management Studioを使用してテーブルにアクセスできます。
私はこれを試しました:
最初のサーバー:
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'
)
2番目のサーバー:
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'
)
私は2番目のサーバーでもこれを試しました:
alter MASTER KEY regenerate with enCRYPTION BY PASSWORD='password'
しかし、それは非対称キーに関するエラーメッセージを与えました。
最初のサーバーから2番目のサーバーにバックアップを復元するにはどうすればよいですか?
更新:
データベースにも非対称キーと対称キーがあります。非対称キーを使用して対称キーを開くと、同じエラーが発生するので、それが機能しない理由だと思います-どういうわけか、キーが使用できるように転送されていません。
私 書いた ミラーリングとTDEに関するブログエントリ。
セカンダリサーバーでデータベースを取得するには、コード行が必要であることを理解するのに少し時間がかかりました。
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'SomePassword'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO
パスワードは、マスターキーファイルの暗号化に使用したものと同じです。 2番目のSQLサーバーでコマンドを発行した後、すべてがうまくいきました。 ここ は、私が作成したdb.stackexchangeの投稿です。