1. 程式人生 > 其它 >SQL Server在資料庫中使用程式集(Assemblies)

SQL Server在資料庫中使用程式集(Assemblies)

開啟clr_enabled 引數

sp_configure 'show advanced options', 1
RECONFIGURE
GO

sp_configure 'clr_enabled', 1
RECONFIGURE
GO

sp_configure
GO

資料庫或login需要滿足的條件

  1. 程式集經過了強名稱簽名或使用證書進行了 Authenticode 簽名。 此強名稱 (或證書) 在 內部建立為非對稱金鑰 (或證書) ,並且具有外部訪問程式集的 EXTERNAL ACCESS ASSEMBLY 許可權) (或不安全程式集的 UNSAFE ASSEMBLY 許可權 () 的相應登入名。
  2. 資料庫所有者 (DBO) 具有 EXTERNALACCESS程式集的EXTERNALACCESS ASSEMBLY () 或UNSAFE ASSEMBLY(forUNSAFE程式集) 許可權,並且資料庫的TRUSTWORTHY資料庫屬性設定為ON。

使用sys.sp_add_trusted_assembly新增程式集

USE TrustedAsmDB;
GO

CREATE ASSEMBLY Sql2k17TrustedAsm
FROM 'W:\\<path_to_dll>\\Sql2k17TrustedAsm1.dll'
GO

建立程式集後匯出為指令碼,獲取到裡面的二進位制值

USE master;
GO
DECLARE @clrName nvarchar(4000) = 'sql2k17trustedasm1, ...'
DECLARE @asmBin varbinary(max) = 0x4D5A90000300000004000000FFFF00...;
DECLARE @hash varbinary(64);

SELECT @hash = HASHBYTES('SHA2_512', @asmBin);

EXEC sys.sp_add_trusted_assembly @hash = @hash,
                                 @description = @clrName;