一部の列を暗号化するために、対称暗号化を有効にしたDBがあります。 は私がデータ暗号化を使用するSql Server 2008R2エンタープライズ
CREATE PROCEDURE [dbo].[sys_EnableSymmetricEncryption]
AS
BEGIN
--If there is no master key, create one now.
IF NOT EXISTS
(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = '9809u0ij989oih9o8yyo98yyo89uyp9p9'
CREATE CERTIFICATE My_Certificate
WITH SUBJECT = 'My Database';
CREATE SYMMETRIC KEY My_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE My_Certificate;
END
以下のように、スクリプトからDBを作成した後、私はこれを実行して、スクリプトからDBを作成するので、後に暗号化を有効にするには、SPを作成し、私は
で暗号化された列にデータを保存することができます
INSERT INTO [dbo].[Cards]
([CardNumber]
,[CardSecurityCode]
,[CardExpirationDate]
,[NameOnCard])
VALUES
(EncryptByKey(Key_GUID('My_Key_01'), @CardNumber) ,
EncryptByKey(Key_GUID('My_Key_01'), @CardSecurityCode) ,
EncryptByKey(Key_GUID('My_Key_01'), @CardExpirationDate) ,
EncryptByKey(Key_GUID('My_Key_01'), @NameOnCard))
と
OPEN SYMMETRIC KEY My_Key_01
DECRYPTION BY CERTIFICATE My_Certificate;
SELECT [CardID]
,CONVERT(nvarchar, DecryptByKey([CardNumber])) as 'CardNumber'
,CONVERT(nvarchar, DecryptByKey([CardSecurityCode])) as 'CardSecurityCode'
,CONVERT(nvarchar, DecryptByKey([CardExpirationDate])) as 'CardExpirationDate'
,CONVERT(nvarchar, DecryptByKey([NameOnCard])) as 'NameOnCard'
FROM [Cards]
すべてのIバックアップデシベルまでうまく機能し、差分のバックアップを復元しようとデータを取得私は選択を(上記のように)私は
Please create a master key in the database or open the master key in the session before performing this operation.
IF NOT EXISTS
(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = '9809u0ij989oih9o8yyo98yyo89uyp9p9'
でキーを再作成しようとしていたが、このエラーを取得する実行しようとすると、復元した後erentサーバ 同じエラーが表示されます。 私はマスターキー、証明書および対称鍵を作成するには、上に示した最初のSpのを実行しようとすると、私はエラー
Msg 15581, Level 16, State 3, Procedure sys_EnableSymmetricEncryption, Line 11 Please create a master key in the database or open the master key in the session before performing this operation. Msg 15282, Level 16, State 1, Procedure sys_EnableSymmetricEncryption, Line 14 A key with name 'OneTest_Key_01' or user defined unique identifier already exists or you do not have permissions to create
を取得たぶん私はそれらを作成しようとする前に、証明書および対称鍵を削除しようとする必要がありますしかし、彼らはどこに位置しているのかわかりません。
これをどのように処理するか考えてください。
おかげ
PS私が同じサーバー、でもとして別のデータベースにリストアする場合は、すべての罰金
私はこれを実行すると、私は次のエラーを取得しますメッセージ15329、レベル16、状態20、行1 現在のマスターキーは復号化できません。これがデータベースマスターキーの場合は、この操作を実行する前にセッションで開こうとする必要があります。 FORCEオプションを使用すると、このエラーを無視して操作を続行できますが、古いマスターキーで暗号化されたデータは失われます。
アイデア? – bzamfir
不幸にも他のアイデアはありません。私はWebで見つけたものだけを共有することができた: http://social.msdn.microsoft.com/Forums/en-US/sqlsecurity/thread/1962ea62-28d8-4331-af6e-a73e1a0d4bcc/ http:// stackoverflow。 com/questions/2017865/sql-server-2008-open-master-key-error-upon-physical-server-change-over – cichy