SQL Server中的CLR程式設計——用.NET為SQL Server編寫儲存過程和函式
阿新 • • 發佈:2019-02-03
1、開啟VS2010 新建專案->類庫->AdditionalMD5
2、1.建立類(函式)方法->FunctionMD5
2.建立類(儲存過程)方法->GetMD5
3、然後在SQL SERVER 資料庫中操作
1.目標資料庫例項需要啟用clr整合
exec sp_configure 'clr enabled', 1;--在SQL Server中啟用CLR
reconfigure;
go
2.目標資料庫的可信任屬性需要設為false,可以使用以下語句啟用
ALTER DATABASE [IPVA_Builder] SET TRUSTWORTHY ON
3.在資料庫中註冊DLL
CREATE ASSEMBLY MySqlCLR FROM 'F:\練習\AdditionalMD5\AdditionalMD5\bin\Debug\AdditionalMD5.dll'
4.建立函式
--從CLR程式集中建立函式,函式名為FunctionGetMD5有三個引數,
--[SqlCLR]是SQL Server中程式集名
--[AdditionalMD5.FunctionMD5]是.NET中的類的全名(名稱空間及類名)
--[FunctionGetMD5]是.NET中類的函式名
5.建立儲存過程CREATE FUNCTION [dbo].[FunctionGetMD5] ( @path AS NVARCHAR(max) ) RETURNS [nvarchar] ( 128) WITH EXECUTE AS CALLER AS EXTERNAL NAME [MySqlCLR].[AdditionalMD5.FunctionMD5].GetMD5HashFromFile GO
CREATE PROCEDURE [dbo].[ProcedureGetMD5]
(
@path AS NVARCHAR(max),
@formExt AS NVARCHAR(50),
@ToExt AS NVARCHAR(50)
)
AS
EXTERNAL NAME [MySqlCLR].[AdditionalMD5.GetMD5].GetMD5HashFromFile
GO
6.程式集的許可權級別必須設為 external access,否則在部署的時候會報錯
在資料庫檢視下:ALTER ASSEMBLY [MySqlCLR] WITH PERMISSION_SET = UNSAFE
7.呼叫儲存過程和函式方法
EXEC [dbo].[ProcedureGetMD5] @path='D:\Backup\桌面\test.tmp',@formExt='tmp',@ToExt='bak'
SELECT [dbo].[FunctionGetMD5]('D:\Backup\桌面\test.tmp')