SQL Server在資料庫中使用程式集(Assemblies)
阿新 • • 發佈:2021-12-21
開啟clr_enabled 引數
sp_configure 'show advanced options', 1
RECONFIGURE
GO
sp_configure 'clr_enabled', 1
RECONFIGURE
GO
sp_configure
GO
資料庫或login需要滿足的條件
- 程式集經過了強名稱簽名或使用證書進行了 Authenticode 簽名。 此強名稱 (或證書) 在 內部建立為非對稱金鑰 (或證書) ,並且具有外部訪問程式集的 EXTERNAL ACCESS ASSEMBLY 許可權) (或不安全程式集的 UNSAFE ASSEMBLY 許可權 () 的相應登入名。
- 資料庫所有者 (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;