暗号化されたデータベースを別のサーバーに復元する


10

私は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番目のサーバーにバックアップを復元するにはどうすればよいですか?

更新:

データベースにも非対称キーと対称キーがあります。非対称キーを使用して対称キーを開くと、同じエラーが発生するので、それが機能していないと思います-どういうわけか、キーが使用できるように転送されていません。

回答:


8

私が書いたミラーリングとTDEに関するブログのエントリを。

セカンダリサーバーでデータベースを取得するには、コード行が必要であることを理解するのにしばらく時間がかかりました。

 OPEN MASTER KEY DECRYPTION BY PASSWORD = 'SomePassword'
 ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
 GO

パスワードは、マスターキーファイルの暗号化に使用したものと同じです。2番目のSQLサーバーでコマンドを発行した後、すべてがうまくいきました。これも私が作成したdb.stackexchangeの投稿です。


そのブログエントリは役に立ちます。「マスター」の代わりに、コピーしたい特定のデータベースを使用することを除いて、私はそれに従いました。古いマスターキーで暗号化された非対称キー 'asym_something'の復号化中にエラーが発生しました。FORCEオプションを使用すると、このエラーを無視して操作を続行できますが、古いマスターキーで復号化できないデータは利用できなくなります。」ファイルからマスターキーを復元するとき。強制する必要がありますか?(これは私がデータベースを復元した後ですが、あなたの指示は後で復元します。)
paulmorriss

1
ありがとう、それを理解するのに長い時間がかかりました。ああ、私はあなたがそれを強制すべきかどうかわかりません。私の理解では、「キー」は各サーバーのMASTERデータベースに関連付けられています。データベースに関連付けられている唯一のものは、マスターキーによって署名された証明書です。したがって、server1にマスターキーを作成し、それをバックアップしてから、server 2にキーを復元する必要があります。次に、データベースの証明書に移動します。私は他の誰かが主題にいくつかの光を当てることができることを望みます。
RateControl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.