如何註冊 System.DirectoryServices 以在 SQL CLR 使用者函式中使用?
我正在移植一個舊的 3
2-bit COM組件,該組件是VB6為了讀取和寫入Active Directory伺服器而編寫的。新的解決方案將C#使用並將使用SQL CLR使用者功能。我嘗試部署到的程序集
SQL Server包含對System.DirectoryServices.SQL Server該項目確實編譯沒有任何錯誤,但由於以下錯誤,我無法將程序集部署到:
Error: Assembly 'system.directoryservices, version=2.0.0.0, culture=neutral, publickeytoken=b03f5f7f11d50a3a.' was not found in the SQL catalog.
System.DirectoryServices在 SQL Server 上註冊的正確步驟是什麼?
其他答案提供的資訊使我找到了解決方案。以下是我提出的步驟以供將來參考:
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 程序集。