Sql-Server

SQL Server CLR 中的第 3 方 dll

  • March 28, 2017

我需要在 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 配置的應用程序安全性:

  1. 更喜歡將程序集註冊為SAFE,只有在特殊情況下才應該使用EXTERNAL_ACCESSor UNSAFE
  2. 不要期望能夠在完全信任的 CLR(即,不是由 Sql Server 託管的 CLR)上做所有事情——SQLCLR 是一個沙盒執行時。
  3. 不要嘗試動態載入程序集,因為這Assembly.Load()是有意限制的。
  4. 如果您打算使用UNSAFE.
  5. 程式碼執行在執行 Sql Server 的服務的身份的上下文中執行(我認為!)
  6. 從託管程序集(例如 via context connection = true;)進行的數據庫訪問在連接使用者的上下文中執行,因此您需要確保知道該庫對您的數據具有哪些訪問權限。

引用自:https://dba.stackexchange.com/questions/12479