在SQL Server中解密数据并推送到视图

时间:2018-04-20 17:57:23

标签: sql-server sql-server-2008 tsql

我正在尝试加入几个不同的表,其中我加入的大多数密钥都是加密的。

我想解密列,加入表然后推送到视图。

以下是我当前的查询:

OPEN symmetric KEY decryption_key decryption BY password = 'password';

CREATE VIEW new_view 
AS
    SELECT 
        id,  
        yearid, 
        quarterid,  
        CONVERT(VARCHAR(200), Decryptbykey(accountno)) AS 'AccountNo', 
        CONVERT(NVARCHAR(200), Decryptbykey(firstname)) AS 'FirstName', 
        CONVERT(NVARCHAR(200), Decryptbykey(lastname)) AS 'LastName', 
        CONVERT(NVARCHAR(200), Decryptbykey(dateofbirth)) AS 'DateOfBirth', 
    FROM   
        table1 
    JOIN 
        table2 ON table1.AccountNo = table2.AccountNo

我得到的错误是:

  

关键字'OPEN'

附近的语法不正确

我似乎无法解密数据并将其推送到视图中。我尝试了多种组合。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

正如@TT所提到的,GO之前需要CREATE VIEW。这就是语法错误的原因。要创建视图,您不需要打开密钥。所以CREATE VIEW应该可以正常工作。要执行视图,您需要打开密钥:

OPEN SYMMETRIC KEY decryption_key decryption BY password = 'password';
SELECT * FROM new_view;
CLOSE SYMMETRIC KEY decryption_key;

密钥在其余的连接会话中保持打开状态。