在SQL Server中調用 .NET 類庫的方法要分爲下面幾步來實現:
1、在.NET中新建一個類庫項目,並在這個項目中添加一個類文件,並把要被SQL Server調用的方法定義爲公有的,靜態的方法。
2、把這個項目編譯爲一個DLL。
3、在SQL Server中註冊這個DLL。
4、通過使用SQL Server的函數來訪問指定的.NET方法。
1: 在類庫中編寫方法,必須是靜態公有的
public class CLRFunctions
{
public static string HelloWorld( string Name)
{
return ( " Hello " + Name);
}
}
2: 啓用CLR功能
默認情況下,SQL Server中的CLR是關閉的,所以我們需要執行如下命令打開CLR
exec sp_configure ' clr enabled ' , 1
reconfigure [with override]
go
如果上面的命令在執行過程中出現“不支持對系統目錄進行即席更新 ”的錯誤時,可以把上面方括號裏面的內容加上。
3:註冊DLL
爲了調用我們寫的那個方法,需要在SQL Server中註冊我們剛剛編譯好的那個DLL。 我們可以在數據庫中使用如下命令來註冊DLL(路徑爲你的DLL文件的路徑)
如果要刪除註冊的DLL,可以使用下面的方法:
4:在SQL Server中調用我們的.NET方法
爲了調用.NET方法,我們可以寫一個SQL Server自定義函數,並在其內使用“EXTERNAL NAME”來通知SQL Server使用CLR功能。 代碼如下:
(
@name as nvarchar ( 200 ) 中國網管論壇bbs.bitsCN.com
)
RETURNS nvarchar ( 200 )
AS EXTERNAL NAME asmHelloWorld. [ SQLDLL .CLRFunctions ] .HelloWorld
上面的自定義函數做了兩項工作。首先是聲明瞭一個nvarchar參數,它等同於.NET裏的string類型(如果將其設置爲varchar並且後面使用了“EXTERNAL NAME”的話就會報錯)。然後使用“EXTERNAL NAME”來調用.NET方法。 語法如下:
但是,當我使用這個語法調用.NET方法的時候,SQL Server就會報錯,所以爲了讓它正常工作,我使用瞭如下語法:
網管網bitsCN.com
現在我們就可以通過如下語句調用.NET方法了: