以下是我的情景:
我运行了以下命令来启用加密:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'
RESTORE MASTER KEY FROM FILE = 'ThePath'
DECRYPTION BY PASSWORD = 'DEF'
ENCRYPTION BY PASSWORD = 'GHI'
如果我以SysAdmin身份连接到数据库,我可以解密加密的列。查询工作得很好。
如果我以本地用户身份连接到数据库,则会收到以下错误:
Ms 15581,Level 16,State 3,Line 2
请在执行此操作之前在数据库中创建主密钥或在会话中打开主密钥。
以本地用户身份登录时,我运行以下命令:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'
我能够为连接运行查询,但是一旦我打开新连接,我就会收到错误。
我能够始终如一地运行查询的唯一方法是每次需要访问加密列时运行以下命令:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'
每次我想要选择,更新或插入表格时,我都必须执行以下操作:
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'ABC'
select EncryptedColumn from TableA where x = 2
我想弄清楚为什么每次都要继续打开万能钥匙。通常我只运行一次命令然后就是这样。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:1)
您需要将DMK添加到系统数据库中:
OPEN MASTER KEY DECASSPTION BY PASSWORD ='@这是一个123强密码';
ALTER MASTER KEY 按服务主键添加加密;
这将允许SQL Server在需要时自动自动打开数据库主密钥。
http://msdn.microsoft.com/en-us/library/ms186937(v=sql.90).aspx