1

レプリカにマスターキー(dmk)があっても暗号化されたバックアップを復元しようとすると、サービスマスターキー、バックアップを生成した元の/プライマリサーバーから復元された証明書と秘密キーこの操作を実行する前に、データベースにマスターキーを作成するか、セッションでマスターキーを開いてください

Msg 15581, Level 16, State 7, Line 137 
Please create a master key in the database or open the master key in the session before performing this operation. 
Msg 3013, Level 16, State 1, Line 137 
VERIFY DATABASE is terminating abnormally. 

エラーを回避するために、このような操作の前後でマスターキーを開閉します。しかし、プライマリでは、操作を行うためにマスターキーを開いたり閉じたりする必要はありません。

OPEN MASTER KEY DECRYPTION BY PASSWORD = 'MyTest!M4st3rPass'; 
RESTORE VERIFYONLY FROM DISK = '\\FS1\SqlBackups\SQL01\SystemDbs\msdb_backup_2017_09_22_171915_6346240.bak' WITH FILE = 1, NOUNLOAD, NOREWIND; 
CLOSE MASTER KEY ; 

は、私は主に、暗号化の拇印とバックアップ履歴を持っているためであると考えているが、私は他のセカンダリに関連する何かが欠けていた場合、私は疑問に思って。

しかし、結局、証明書がセカンダリに復元されているので、Backup EncryptionのSystemsDBバックアップ保守計画オプションに割り当てますが、同じ理由で[​​Verify]オプションをオンにしておくと、ジョブは失敗します。

Source: Back Up Database Task 
Executing query "BACKUP DATABASE [master] TO DISK = N'\\FS1\SqlBac...".: 50% complete 
End Progress 
Error: 2017-09-22 17:08:09.28 
Code: 0xC002F210 
Source: Back Up Database Task Execute SQL Task 
**Description**: Executing the query "declare @backupSetId as int select @backupSetId =..." 
failed with the following error: "Please create a master key in the database or open the master key in the session before performing this operation. 
VERIFY DATABASE is terminating abnormally.". 
Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. 
End Error 

答えて

0

修正しました。

は、参照:https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/sql-server-and-database-encryption-keys-database-engine

この段落はそれを離れて与えた:

DMKが変更されるたびにマスターシステムのデータベースに保存されたDMKのコピーが静かに更新されます。ただし、ALTER MASTER KEYステートメントのDROP ENCRYPTION BY SERVICE MASTER KEYオプションを使用すると、この既定値を変更できます。 OPEN MASTER KEYステートメントとパスワードを使用して、サービスマスタキーで暗号化されていないDMKを開く必要があります。

私のセカンダリノードで以下を実行してください。

  1. ドロップ証明書...
  2. ドロップマスターキー
  3. は、マスターキーを作成します...
  4. ...ファイルからこれを確認した後、ソリューションに到着

を証明書を作成します。

--on primary, output: master 
select name from sys.databases where is_master_key_encrypted_by_server=1 

--on secondary, output: nothing... 
select name from sys.databases where is_master_key_encrypted_by_server=1 

私はマスターキーがサービスマスターキーによってデフォルトで暗号化されるようになったら、復号化を自動化すると思いました。

--on secondary 
drop certificate [BackupCertWithPK] 
drop master key 

--Skipped restore master key from file. 
--Instead, I ran create master key with password. 
create master key encryption by password = 'MyTest!Mast3rP4ss'; 

--verify by open/close. 
open master key decryption by password = 'MyTest!Mast3rP4ss'; 
close master key; 

--proceed to restore/create cert from file. 
create cerfiticate [BackupCertWithPK] 
from file = '\\FS1\SqlBackups\SQL1\Donot_delete_SQL1-Primary_BackupCertWithPK.cer' 
with private key (file = '\\FS1\SqlBackups\SQL1\Donot_delete_SQL1-Primary_BackupCertWithPK.key' , decryption by password = '[email protected]') ; 

この後、再度上記の選択を実行します。

--on secondary, output: master, now there was hope again! 
select name from sys.databases where is_master_key_encrypted_by_server=1 

最後に、検証と暗号化に設定されたオプションでバックアップジョブを再実行しました。確認ステップが失敗したり、マスターキーの開閉を促したりしませんでした。

以下は、マスターキーを開閉することなく、意図したとおりに機能しました。

RESTORE VERIFYONLY FROM DISK = '\\FS1\SqlBackups\SQL01\SystemDbs\msdb_backup_2017_09_22_171915_6346240.bak' WITH FILE = 1, NOUNLOAD, NOREWIND; 

Wohooo!任務完了。

0

私は、これはまさにあなたが探しているものでない場合は確信していますが、OPEN MASTER KEYの発言は、関連するように見えた何かを持っていました。

これは本番環境ではテストしたくないでしょうが、マスターキーが開かれたら、ALTER MASTER KEY REGENERATEコマンドでそれを必要としないオプションがあります。

データベースマスターキーがサービスマスターキーで暗号化された場合、それは復号化または 暗号化のために必要とされるとき、それは自動的に開かれます 。この場合、OPEN MASTER KEY文を使用する必要はありません。

新しいSQL Serverインスタンスにデータベースを最初にアタッチまたは復元すると、データベースマスターキー (サービスマスタキーで暗号化された)のコピーがまだサーバーに格納されていません。

データベース マスターキー(DMK)を復号化するには、OPEN MASTER KEYステートメントを使用する必要があります。 DMKが復号化されると、後で自動暗号化を有効にするオプション があります。これは、ALTER MASTER KEY REGENERATEステートメントを使用して、サービスマスターキー(SMK)で暗号化されたDMK のコピーをサーバーに提供します。

データベースが以前のバージョンからアップグレードされた場合、新しいAESアルゴリズムを使用するには、DMKを に再生成する必要があります。 DMKを再生成する方法の詳細については、「ALTER MASTER KEY(Transact-SQL)」を参照してください。 AESにアップグレードするためにDMKキーを再生成するために必要な時刻は、 で、DMKで保護されているオブジェクトの数は に依存します。 へのDMKキーの再生成はAESへのアップグレードが1回だけ必要であり、鍵のローテーション戦略の一部として将来の 再生に影響を与えません。

https://docs.microsoft.com/en-us/sql/t-sql/statements/open-master-key-transact-sql

+1

ThxがヘルプCKのために、私はAlter master key regenを試しましたが、うまくいきませんでしたが、私はまだ同じエラーが発生します。 – Hiram

関連する問題