2017-03-23 9 views
1

既存のテーブルの列を暗号化する必要があります。暗号化された値で更新しようとしましたが、列が空白になりました。ブランクの代わりにカラムでバイナリ値を見る方法がありますか?SQL Server 2008 R2の既存のテーブルの暗号化列

一時テーブルにデータをダンプしたり、暗号化したり、元に戻したりしたくないのですが、履歴DBのようにDBにスペースがないためです。

ここに私の暗号化と復号化コードがあります。

OPEN SYMMETRIC KEY PCI_Key DECRYPTION 
    BY CERTIFICATE Cert 
    GO 
     UPDATE dbo.Table1 
     SET column1=ENCRYPTBYKEY(KEY_GUID('PCI_Key'), column1) 
     CLOSE SYMMETRIC KEY PCI_Key 

    OPEN SYMMETRIC KEY PCI_Key DECRYPTION 
    BY CERTIFICATE Cert 
    GO 
     SELECT 
     CONVERT(VARCHAR,DEcryptByKey(Column1)) as column1 from dbo.table1 
    CLOSE SYMMETRIC KEY PCI_Key 

答えて

2

暗号化には、SQL SERVER暗号化機能を使用できるVARBINARYデータ型の列が必要です。

テーブルが他に存在する場合は、列のデータ型を直接変更してデータを挿入/更新することができます。既存のデータについては

次の手順に従います(データが他のテーブルには巨大でない場合はアプローチが異なるものになります)

  1. は更新
  2. VARBINARYデータ型で_1列名と値をテーブルに新しい列を作成します。エキサイティングな値からの暗号化を使用して_1新しい列の
  3. 完了したら、古い列を削除し、新しい列の名前を既存の列名で変更します。

乾杯!

+0

ありがとうございました。うまく聞こえるが、テーブルサイズは近くにある13 GB – Rabindra

関連する問題