2011-11-29 92 views
2

我創建使用證書像這樣我的鑰匙:無法打開的證書作爲SQL用戶帳戶對稱密鑰

CREATE SYMMETRIC KEY some_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE myCert;
GO

GRANT VIEW DEFINITION ON CERTIFICATE::myCert TO sqlUser;
GO

GRANT VIEW DEFINITION ON SYMMETRIC KEY::some_Key_01 TO sqlUser;
GO

然後我嘗試打開與我們它像這樣:

OPEN SYMMETRIC KEY some_Key_01
DECRYPTION BY CERTIFICATE myCert;
GO
SELECT CONVERT(datetime, DecryptByKey(EncryptedField))
AS 'DecryptedField'
FROM MyTable;
GO

但我得到的消息:
Msg 15151, Level 16, State 1, Line 23
Cannot find the certificate 'myCert', because it does not exist or you do not have permission.

回答

6

你需要有證書上的control權限:

GRANT CONTROL ON CERTIFICATE::myCert TO sqlUser; 
GO 

並授予關鍵references權限:

GRANT REFERENCES ON SYMMETRIC KEY::some_Key_01 TO sqlUser; 
GO 
+2

感謝。請問,如果我問,爲什麼參考關鍵?爲什麼不只是查看定義?另外,爲什麼控制權,而不是證書的某些子集的權限? –