【问题标题】:Cannot find the asymmetric key -- because it does not exist or you do not have permission找不到非对称密钥 - 因为它不存在或您没有权限
【发布时间】:2011-11-22 03:33:03
【问题描述】:

我正在尝试使用 CLR 通过 SQL 运行 .Net dll - 我没有成功。

我按照here的指示进行操作

所以我正在做以下事情:

CREATE ASYMMETRIC KEY AKEY_SqlClr FROM EXECUTABLE FILE = 'C:\dlls\mySqlClr.dll'

哪个工作正常并创建密钥,然后我尝试执行以下操作:

CREATE LOGIN SQLCLR_AsymKeyLogin FROM ASYMMETRIC KEY AKEY_SqlClr

我得到了错误:

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

我怎么可能没有权限呢?我已经验证我有 CREATE LOGIN 权限。有什么想法吗?

【问题讨论】:

  • 我对此的记忆有点模糊...您是在master 数据库中创建它吗?确保在创建密钥之前USE master;

标签: .net sql sql-server clr sqlclr


【解决方案1】:

登录是服务器主体,因此不能从存储在用户数据库中的密钥创建。您必须从 master 数据库中的程序集创建密钥:

use master;
CREATE ASYMMETRIC KEY AKEY_SqlClr FROM EXECUTABLE FILE = 'C:\dlls\mySqlClr.dll';
CREATE LOGIN SQLCLR_AsymKeyLogin FROM ASYMMETRIC KEY AKEY_SqlClr;

【讨论】:

  • 我从这个答案中发现的一件事是,尝试从 SNK 文件(使用 FROM FILE 而不是 FROM EXECUTABLE FILE)而不是 DLL 在主数据库中创建密钥会导致:@987654325 @。但是,无论如何,使用 DLL 对我来说更好,因为这意味着我不必移动 snk 文件就可以让它在数据库中注册。
猜你喜欢
  • 2013-10-01
  • 2016-11-22
  • 2015-05-27
  • 2010-12-08
  • 2017-03-19
  • 1970-01-01
  • 2013-04-09
  • 2021-10-03
  • 2021-07-22
相关资源
最近更新 更多