.net 如何注册System.DirectoryServices以在SQL CLR用户函数中使用?
我正在移植一个旧的3.net 如何注册System.DirectoryServices以在SQL CLR用户函数中使用?,.net,sql-server-2008,active-directory,sqlclr,directoryservices,.net,Sql Server 2008,Active Directory,Sqlclr,Directoryservices,我正在移植一个旧的32位COM组件,该组件是用VB6编写的,用于读取和写入Active Directory服务器。新的解决方案将在C#中,并将使用sqlclr用户函数 我试图部署到SQL Server的程序集包含对System.DirectoryServices的引用。项目编译时没有任何错误,但由于以下错误,我无法将程序集部署到SQL Server: 错误:在SQL目录中找不到程序集“system.directoryservices,version=2.0.0,culture=neutral,p
2位COM
组件,该组件是用VB6
编写的,用于读取和写入Active Directory
服务器。新的解决方案将在C#
中,并将使用sqlclr
用户函数
我试图部署到SQL Server
的程序集包含对System.DirectoryServices
的引用。项目编译时没有任何错误,但由于以下错误,我无法将程序集部署到SQL Server
:
错误:在SQL目录中找不到程序集“system.directoryservices,version=2.0.0,culture=neutral,publickeytoken=b03f5f7f11d50a3a”。
在SQL Server上注册System.DirectoryServices
的正确步骤是什么 这有帮助吗:
老实说,我对SQL Server CLR的使用不太了解。因此,如果这有帮助的话,我将坚持下去学习自己
编辑#1
这是关于这个主题的另一个有趣的链接
我希望这有帮助 这篇文章有用吗 人们经常会问关于基地的设置 类库程序集,这些程序集可以 在SQLCLR中安全使用。通常 采用“我可以使用汇编吗?” SQLCLR过程中的System.XYZ.dll “代码”或“我为什么得到”程序集 “当我打开时,找不到System.XYZ.dll” 尝试将我自己的程序集编入目录 叫这个吗?是我听到的 最常提到的是 System.DirectoryServices.dll(活动 目录支持)或 System.Management.dll(WMI支持)或 System.Remoting.dll等。唯一 使用它们的方式是运行CREATE 你自己组装,哪一个 涉及使用权限集= 不安全。并将所有 依赖性。不适合虚弱的人 心 另外-SQL Server CLR不支持所有可想象的程序集-请在此处查找列表:
根据其他答案提供的信息,我找到了解决方案。以下是我提出的步骤,以供将来参考:
CREATE ASSEMBLY [System.DirectoryServices]
FROM 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.DirectoryServices.dll'
WITH PERMISSION_SET = UNSAFE
GO
第一次运行上面的语句时,出现以下错误:
为程序集“System.DirectoryServices”创建程序集失败,因为未授权程序集“System.DirectoryServices”的权限\u SET=UNSAFE。当以下任一项为true时,将授权该程序集:数据库所有者(DBO)具有不安全的程序集权限,并且数据库在上具有Trustly database属性;或者使用证书或非对称密钥对程序集进行签名,该证书或非对称密钥具有具有不安全程序集权限的相应登录名
为了让CREATE ASSEMBLY语句无误地执行,我必须首先打开TRUSTORY,如下所示:
ALTER DATABASE DatabaseName SET TRUSTWORTHY ON
GO
一旦开启Trustly,命令将无误执行,但它确实发出了听起来可怕的警告:
警告:Microsoft.NET Framework程序集“system.directoryservices,version=2.0.0.0,culture=neutral,publickeytoken=b03f5f7f11d50a3a,processorarchitecture=msil”。您正在注册的程序集未在SQL Server托管环境中进行全面测试,因此不受支持。将来,如果您升级或服务此程序集或.NET Framework,您的CLR集成例程可能会停止工作。有关详细信息,请参阅SQL Server联机丛书
在SQL Server中正确注册System.DirectoryServices后,我现在可以部署/注册依赖的自定义SQL CLR程序集,而不会出现任何问题。要补充一点,我花了一天时间尝试使用非对称密钥签名的DLL注册程序集,但由于错误而失败 …未获得权限\u SET=safe的授权。当 后来才发现SQL server不喜欢中间有空格的路径
CREATE ASYMMETRIC KEY AsyKeyName FROM executable FILE = 'C:\Program Files\...'