数据库
首页 > 数据库> > 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) 具有 EXTERNAL ACCESS 程序集的 EXTERNAL ACCESS ASSEMBLY () 或 UNSAFE ASSEMBLY (for UNSAFE 程序集) 权限,并且数据库的 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;

标签:ASSEMBLY,Assemblies,sp,程序,Server,SQL,GO,hash,数据库
来源: https://www.cnblogs.com/ls11736/p/15715168.html