Sql-Server
SQL Server CLR 中的第 3 方 dll
我需要在 SQL Server CLR 的觸發器 c# 程式碼中使用第三方 DLL
但是當我嘗試添加引用時,它只會顯示來自 SQL Server 的一些 DLL。
如何將我的第三方 dll添加到 SQL Server?
您只能添加對已向 Sql Server 註冊的程序集的引用。如果它們未註冊,它們將不會顯示在“添加引用”對話框中。
註冊 DLL 需要執行許多步驟,首先您需要重新配置數據庫:
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON; sp_configure 'clr enabled', 1; RECONFIGURE;
完成此操作後,Sql Server 將啟用 CLR。接下來,您需要註冊您的程序集:
CREATE ASSEMBLY [MyAssembly] AUTHORIZATION [MyUser] FROM 'C:\CLR\MyAssembly.dll' WITH PERMISSION_SET = SAFE
如果最後一個腳本正確執行,則程序集現在已註冊,並將出現在“添加引用”對話框中。
不過,您需要考慮的是 Sql Server CLR 配置的應用程序安全性:
- 更喜歡將程序集註冊為
SAFE
,只有在特殊情況下才應該使用EXTERNAL_ACCESS
orUNSAFE
。- 不要期望能夠在完全信任的 CLR(即,不是由 Sql Server 託管的 CLR)上做所有事情——SQLCLR 是一個沙盒執行時。
- 不要嘗試動態載入程序集,因為這
Assembly.Load()
是有意限制的。- 如果您打算使用
UNSAFE
.- 程式碼執行在執行 Sql Server 的服務的身份的上下文中執行(我認為!)
- 從託管程序集(例如 via
context connection = true;
)進行的數據庫訪問在連接使用者的上下文中執行,因此您需要確保知道該庫對您的數據具有哪些訪問權限。