【发布时间】:2013-10-01 03:26:42
【问题描述】:
使用 SQL 2005
我创建了一个用密码加密的主密钥,然后用服务主密钥加密了主密钥
然后我创建了一个 ASYMMETRIC_KEY,我用它来加密我的 SYMMETRIC_KEY 我使用 SA 用户的 SQL 完成了所有这些操作,并以域管理员身份登录到 Windows 服务器。
我的数据库中有一个用户对我的数据库只有 dbo 权限,然后我授予该用户对所有必要存储过程的执行权限,并且我还拒绝对这些相同的存储过程进行视图定义。
在我进行加密的地方给我带来麻烦的存储过程就是这里。这一切都在我的测试电脑上的 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]
我得到同样的错误找不到对称密钥或我没有权限。
【问题讨论】:
-
我遇到了一些权限问题,我认为
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY已解决。 -
是的,我也运行了该命令,但仍然收到错误消息。我觉得这与我的数据库用户有关,该用户对我的存储过程具有权限,但对密钥没有权限。但是当我尝试授予该用户对我的加密密钥的权限时,它说我没有权限这样做并且我使用的是 sql 的 SA 帐户
-
看看this MSDN article。我很确定我也必须授予 REFERENCES ...
-
谢谢,但它根本不允许我授予任何权限,即使我使用与创建密钥相同的用户,它也会失败说我没有权限
标签: sql sql-server-2005 encryption