1. 程式人生 > >SQL Server中的CLR程式設計——用.NET為SQL Server編寫儲存過程和函式

SQL Server中的CLR程式設計——用.NET為SQL Server編寫儲存過程和函式

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中類的函式名 

CREATE FUNCTION [dbo].[FunctionGetMD5]  
(  
	@path AS NVARCHAR(max)
)  
RETURNS [nvarchar] ( 128) WITH EXECUTE AS CALLER 
AS  
EXTERNAL NAME [MySqlCLR].[AdditionalMD5.FunctionMD5].GetMD5HashFromFile
GO
5.建立儲存過程
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')