其他答案提供的信息使我找到了解决方案。以下是我提出的步骤以供将来参考:
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”未获得 PERMISSION_SET = UNSAFE 的授权。当以下任一情况为真时,程序集被授权:数据库所有者 (DBO) 具有 UNSAFE ASSEMBLY 权限并且数据库具有 TRUSTWORTHY 数据库属性;或者程序集使用证书或非对称密钥签名,该密钥具有相应的登录名并具有 UNSAFE ASSEMBLY 权限。
为了让 CREATE ASSEMBLY 语句正确执行,我必须首先打开 TRUSTWORTHY ON,如下所示:
ALTER DATABASE DatabaseName SET TRUSTWORTHY ON
GO
开启 TRUSTWORTHY 后,命令执行没有错误,但确实显示了这个可怕的警告:
警告: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 程序集。