找不到对称密钥”,因为它不存在或您没有权限

问题描述 投票:10回答:3

使用SQL 2005

我创建了一个用密码加密的主密钥,然后用服务主密钥对主密钥进行加密

然后我创建了一个ASYMMETRIC_KEY,我用它来加密我的SYMMETRIC_KEY,我使用SQL的SA用户进行了所有这些操作,并以域管理员身份登录Windows服务器。

我的数据库中有一个用户,该用户仅对我的数据库具有dbo权限,然后我授予该用户对所有必要存储过程的执行权限,并且我也拒绝对那些相同的存储过程进行视图定义。

这里给我带来麻烦的存储过程使我很麻烦。同样,这一切在我的测试PC上都适用于SQL2012,但是现在我正在使用sql 2005在生产服务器上创建它,并且失败了]

open symmetric key
    MYKEY_NAME_SYM decryption by Asymmetric key MYKEY_NAME_ASYM
    set @ENCRYPTVARIABLE = (select ENCRYPTBYKEY(KEY_GUID('MYKEY_NAME_SYM'), @ENCRYPTCOLUMN))    
close symmetric key MYKEY_NAME_SYM

我收到的错误是:

Cannot find the symmetric key 'MKEY_NAME_SYM', because it does not exist or you do not have permission.

因此,我猜测我在数据库中使用的用户没有权限,但是当我尝试授予权限时

GRANT 
VIEW DEFINITION ON SYMMETRIC KEY::MKEY_NAME_SYM TO [myuser]

我遇到相同的错误,找不到对称密钥,或者我没有权限。

使用SQL 2005,我创建了一个用密码加密的主密钥,然后用服务主密钥加密了该主密钥,然后又创建了一个ASYMMETRIC_KEY,我用它来加密我的SYMMETRIC_KEY I ...

sql sql-server-2005 encryption
3个回答
17
投票

使用管理用户在脚本控制台中写:


3
投票
我需要切换SQL以使用Windows身份验证,因为唯一具有权限的用户是domain \ admin用户,这是我创建密钥的用户。

0
投票
我没有看到其他人提到的一件事:要通过对称或非对称密钥创建登录名,必须同时在MASTER数据库中创建密钥和登录名。
© www.soinside.com 2019 - 2024. All rights reserved.