まとめ
http://blogs.yahoo.co.jp/dk521123/35411224.htmlの機能のまとめを以下に示す
USE [testDataBase]; GO /* 対称キー削除 */ IF EXISTS (SELECT * FROM sys.symmetric_keys WHERE [name] = 'testKeyName01') DROP SYMMETRIC KEY testKeyName01 REMOVE PROVIDER KEY GO /* 証明書削除 */ IF EXISTS (SELECT * FROM sys.certificates WHERE [name] = 'testCertificate01') DROP CERTIFICATE testCertificate01 GO /* マスタキー削除 */ IF EXISTS (SELECT * FROM sys.symmetric_keys WHERE [name] LIKE '%DatabaseMasterKey%') DROP MASTER KEY GO /* マスタキー作成 */ CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'test_password' /* マスタキーをオープン */ OPEN MASTER KEY DECRYPTION BY PASSWORD = 'test_password' GO /* 証明書作成 */ CREATE CERTIFICATE testCertificate01 WITH SUBJECT = 'testCertificate01', START_DATE = '09/02/2010', EXPIRY_DATE = '09/02/2016'; GO /* 対称キー作成 */ CREATE SYMMETRIC KEY testKeyName01 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE testCertificate01; GO /* マスタキーのクローズ */ CLOSE MASTER KEY GO /* 準備:テーブル作成 */ CREATE TABLE testTable( testId nvarchar(100) , testName nvarchar(100) , age int ) GO /* 対称キーのオープン */ OPEN SYMMETRIC KEY testKeyName01 DECRYPTION BY CERTIFICATE testCertificate01; GO /* データ追加(testIdを暗号化) */ INSERT INTO testTable (testId, testName, age) VALUES (EncryptByKey(Key_GUID('testKeyName01'), N'001'), 'Mike', 23); GO /* データ参照(testIdを複合化) */ SELECT CONVERT(NVarChar(MAX), DecryptByKey(testId)) AS testId , testName , age FROM testTable GO /* 対称キーのクローズ */ CLOSE SYMMETRIC KEY testKeyName01;