使用两个ASYMMETRIC KEY创建登录

时间:2014-05-26 08:55:58

标签: c# sql .net sql-server wcf

我正在使用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无效。

1 个答案:

答案 0 :(得分:0)

您需要创建两个登录并为每个登录授予外部访问权限。但是你确定两个组件都需要外部访问吗?只应授予实际使用该权限的人。

请注意,从SQLCLR访问HTTP是一个非常糟糕的主意。从您的客户端应用程序进行缓慢,阻塞,不可靠的调用,不要劫持宝贵的服务器工作人员等待intertubez。如果您决定忽略此问题,请至少确保在发出HTTP请求之前阅读quantum punishment并正确调用Thread.BeginThreadAffinity()