我正在使用SQL SERVER 2012 SP1 Express版。
我想向我的数据库添加两个程序集,因为我正在创建一个存储过程来访问WCF SOAP服务。我跟着这个tutorial去做了。
在该教程上说我必须这样做:
alter database [MyDemoDB]
set trustworthy on;
go
但我不想使用set trustworthy on;
。因此,在另一个tutorial之后,我必须从非对称密钥创建一个登录。
问题是我有两个程序集,而且我不知道如何使用两个ASYMMETRIC KEY
创建登录名,或者是否有必要。
现在我有了这个SQL:
CREATE ASYMMETRIC KEY CodeServerDBKey FROM EXECUTABLE FILE = 'D:\CodeServerDB.dll'
CREATE ASYMMETRIC KEY CodeServerWCFClientKey FROM EXECUTABLE FILE = 'D:\CodeServerWCFClient.dll'
CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY CodeServerDBKey, CodeServerWCFClientKey
GRANT EXTERNAL ACCESS ASSEMBLY TO SQLCLRTestLogin
我是否需要使用非对称密钥创建登录?
BTW,CREATE LOGIN SQLCLRTestLogin FROM ASYMMETRIC KEY CodeServerDBKey, CodeServerWCFClientKey
无效。
答案 0 :(得分:0)
您需要创建两个登录并为每个登录授予外部访问权限。但是你确定两个组件都需要外部访问吗?只应授予实际使用该权限的人。
请注意,从SQLCLR访问HTTP是一个非常糟糕的主意。从您的客户端应用程序进行缓慢,阻塞,不可靠的调用,不要劫持宝贵的服务器工作人员等待intertubez。如果您决定忽略此问题,请至少确保在发出HTTP请求之前阅读quantum punishment并正确调用Thread.BeginThreadAffinity()
。