sql - 找不到对称 key '' ,因为它不存在或您没有权限

标签 sql sql-server-2005 encryption

使用 SQL 2005

我创建了一个通过密码加密的主 key ,然后使用服务主 key 加密了主 key

然后,我创建了一个 ASYMMETRIC_KEY,用它来加密我的 SYMMETRIC_KEY。我使用 SQL 的 SA 用户完成了这一切,并以域管理员身份登录到 Windows 服务器。

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

在我进行加密时给我带来麻烦的存储过程就是这里。此外,这一切都在我的测试电脑上的 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]

我收到同样的错误,找不到对称 key 或我没有权限。

最佳答案

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

    --Grant View
    GRANT VIEW DEFINITION ON CERTIFICATE::[Certificate_Name] TO [user]
    GRANT VIEW DEFINITION ON SYMMETRIC KEY::[EncryptionKey_Name] TO [user]

    --Grant Control
    GRANT CONTROL ON CERTIFICATE::[Certificate_Name] TO [user]

关于sql - 找不到对称 key '' ,因为它不存在或您没有权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006587/

相关文章:

sql - 如何连接两个表但只返回匹配的行

sql-server - 键值对 XML (SQL Server 2005)

c - 什么是三重 DES (3DES) 加密方法?它与 3DES 有很大不同吗?

mysql - SQL查询从三个表中选择

mysql - SQL中的多个多对多关系

sql - 如何在SQL Server中的历史表中存储历史记录

sql-server - 从我的第一条记录返回到最后一条记录返回之间,SQL Server做什么?

asp.net - 如何查找 SQL Server 2005 的服务器名称

.net - 保护部署在 "hostile"环境中的系统

GSM 语音通信中的加密