You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.5 KiB
MySQL

2 years ago
-- =============================================
-- Author: wanggf719
-- Create date: 2022.08.23
-- Description: SQL Server 启用 CLR 功能
-- Rev: 1.00
-- =============================================
-- 启用CLR功能
GO
-- 启用CLR功能开关
EXEC sp_configure 'clr enabled', 1;
-- 立即生效:
GO
RECONFIGURE;
-- 出现“不支持对系统目录进行即席更新 ”的错误时,改用下面语句
-- GO
-- RECONFIGURE with override
-- 设置权限:
-- 方式1关闭"严格安全"选项
-- 启用高级选项,否则"clr strict security"选项无效
EXEC sys.sp_configure @configname = 'show advanced options', @configvalue = 1;
GO
-- 生效
RECONFIGURE;
GO
-- 关闭"严格安全"选项
EXEC sys.sp_configure @configname = 'clr strict security', @configvalue = 0;
RECONFIGURE;
-- 方式2程序集带签名
-- 方式3程序集加入白名单
GO
-- 定义程序集Hash值变量
DECLARE @hash AS BINARY(64);
-- 获取程序集文件的hash值
SELECT @hash = HASHBYTES('SHA2_512', (SELECT * FROM OPENROWSET (BULK 'D:\Database\SQL Server\ClrDemo\ClrDll\ClrDemoNet35.dll', SINGLE_BLOB) AS [Data]));
-- 加入程序集白名单
EXEC sp_add_trusted_assembly @hash;
-- 加载程序集
-- 加载程序集
-- 加载方式1:使用程序集文件
CREATE ASSEMBLY ClrDemoNet35 FROM 'D:\Database\SQL Server\ClrDemo\ClrDll\ClrDemoNet35.dll';
-- 或者
CREATE ASSEMBLY ClrDemoNet35 FROM 'D:\Database\SQL Server\ClrDemo\ClrDll\ClrDemoNet35.dll' WITH PERMISSION_SET = UNSAFE;
-- 加载方式2:使用文件16进制流
CREATE ASSEMBLY AssemblyName from 0x123344 -- 其中0x12334……是程序集dll文件的十六进制流。可以使用UltraEdit等编辑器把相关dll文件的十六进制流copy出来。
-- 加载方式3:SSMS图形化设置数据库 --> 可编程性 --> 程序集 --> 右键 --> 新建程序集
-- 修改程序集
GO
ALTER ASSEMBLY ClrDemoNet35 FROM 'D:\Database\SQL Server\ClrDemo\ClrDll\ClrDemoNet35.dll' WITH PERMISSION_SET = UNSAFE;
-- 删除程序集
DROP ASSEMBLY AssemblyName
-- 在存储过程中使用
GO
-- 创建存储过程调用Dll方法
CREATE PROCEDURE Pro_ClrDemoNet35_UseClr
AS
-- 存储过程主题:好像只能有这一条直接调用语句,加入其它语句直接报语法错误
EXTERNAL NAME [ClrDemoNet35].[ClrDemoNet35.ClrDemo].[UseClr];
GO
-- 使用存储过程内部调用C#方法)
-- 输出字符串Hello,SQL Server CLR!
EXEC dbo.Pro_ClrDemoNet35_UseClr;