在SQL Server中使用CLR呼叫.NET方法
我們一起來做個示例,在.NET中新建一個類,並在這個類裡新建一個方法,然後在SQL Server中呼叫這個方法。按照微軟所述,通過宿主 Microsoft .NET Framework 2.0 公共語言執行庫 (CLR),SQL Server 2005顯著地增強了資料庫程式設計模型。 這使得開發人員可以用任何CLR語言(如C#、VB.NET或C++等)來寫儲存過程、觸發器和使用者自定義函式。
我們如何實現這些功能呢?
為了使用CLR,我們需要做如下幾步:
1、在.NET中新建一個類,並在這個類裡新建一個public方法。
2、編譯這個類為一個DLL。
3、在SQL Server中註冊這個DLL。
4、新建一個SQL Server函式來訪問指定的.NET方法。
接下來,我們一起來完成一個示例
首先,在Visual Studio中新建一個名為“SQLServerCLRTest”的類庫專案。 然後,新建一個名為“CLRFunctions”的類,並在其內新增一個名為“HelloWold”的方法,程式碼如下:
public class CLRFunctions
{
public static string HelloWorld(string Name)
{
return ("Hello " + Name);
}
}
這是一個非常簡單的方法(為了讓SQL Server可以呼叫它,它必須要是public和static的),這個方法有一個string型別的引數,返回資訊為“Hello”加上你傳入的引數。
現在,我們需要編譯這個專案為一個DLL,並在SQL Server中註冊它。 這也是比較簡單的,在VS中右鍵單擊專案,選擇“生成”後程式就會生成一個DLL。 如果你的專案是除錯模式的話,那麼就可以在如下所示那樣的路徑裡找到編譯好的DLL。
C:\Documents and Settings\mark.smith\My Documents\Visual Studio 2005\Projects\SQLServerCLRTest\SQLServerCLRTest\bin\Debug\SQLServerCLRTest.dll
找到這個DLL後,我們就可以把它拷貝到我們的SQL Server機器上了,如果是相同機器的話我們只要記住這個路徑即可。
啟用CLR功能
預設情況下,SQL Server中的CLR是關閉的,所以我們需要執行如下命令開啟CLR:
exec sp_configure 'clr enabled',1
reconfigure
go
註冊DLL
為了呼叫我們寫的那個方法,需要在SQL Server中註冊我們剛剛編譯好的那個DLL。 我們可以在資料庫中使用如下命令來註冊DLL(路徑為你的DLL檔案的路徑)
CREATE ASSEMBLY asmHelloWorld FROM 'C:\SQLServerCLRTest.dll'
在SQL Server中呼叫我們的.NET方法
為了呼叫.NET方法,我們可以寫一個SQL Server自定義函式,並在其內使用“EXTERNAL NAME”來通知SQL Server使用CLR功能。 程式碼如下:
CREATE FUNCTION dbo.clrHelloWorld
(
@name as nvarchar(200)
)
RETURNS nvarchar(200)
AS EXTERNAL NAME asmHelloWorld.[SQLServerCLRTest.CLRFunctions].HelloWorld
上面的自定義函式做了兩項工作。 首先是宣告瞭一個nvarchar引數,它等同於.NET裡的string型別(如果將其設定為varchar並且後面使用了“EXTERNAL NAME”的話就會報錯)。然後使用“EXTERNAL NAME”來呼叫.NET方法。 語法如下:
程式集名.類名.方法名
但是,當我使用這個語法呼叫.NET方法的時候,SQL Server就會報錯,所以為了讓它正常工作,我使用瞭如下語法:
程式集名.[類名].方法名
現在我們就可以通過如下語句呼叫.NET方法了:
SELECT dbo.clrHelloWorld('Mark')
當你執行這段程式碼的時候,就會得到一個返回結果“Hello Mark”。
我們通過一個很簡單的示例演示瞭如何實現SQL Server的CLR,它可以給我們帶來很多非常有用的幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-551827/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server中CLR安全性詳解SQLServer
- SQL Server CLR 啟用、部署SQLServer
- 在 SQL Server 的儲存過程中呼叫 Com 元件 (轉)SQLServer儲存過程元件
- 在SQL Server中,關於with as使用介紹SQLServer
- 【dinghao】在Asp.net中呼叫非同步方法--使用訊號量ASP.NET非同步
- 理解.NET中的CLR原理(二)
- SQL Server中,WITH AS的使用SQLServer
- SQL Server資料庫在ASP.NET中的備份SQLServer資料庫ASP.NET
- Sql Server在.net中的資料訪問輔助類SQLServer
- 在Java中呼叫Groovy方法的又一種方法:使用介面Java
- 關於SQL Server中儲存過程在C#中呼叫的簡單示例SQLServer儲存過程C#
- 理解.NET中的CLR原理(二) (轉)
- 理解.NET中的CLR原理(三) (轉)
- 讓SQL Server呼叫DLL檔案的方法詳解SQLServer
- 專家訪談:有關SQL Server 2005 CLRSQLServer
- .Net7 CLR的呼叫函式和編譯函式函式編譯
- SQL Server 2005中修改 Server Collation的方法SQLServer
- 在SQL Server 2005 中使用.net程式集的一項注意SQLServer
- SQL Server中合併使用者日誌表的方法SQLServer
- SQL Server MDX中軸的使用SQLServer
- ASP.NET中Server物件的方法ASP.NETServer物件
- 在 iOS 中實現方法鏈呼叫iOS
- [zt] 使用SQL Server中的Linked Server及Remote ServerSQLServerREM
- jsp連線sql server呼叫資料來源方法 (轉)JSSQLServer
- 四種方法在SQL Server資料庫中成批匯入資料SQLServer資料庫
- CDC在sql server 2017中無法使用的問題SQLServer
- 在SQL Server 2008中物件相關性的使用SQLServer物件
- 連線池 sql server ado.net 使用SQLServer
- .NET連線SQL ServerSQLServer
- SQL SERVER中游標原理和使用方法SQLServer
- 使用SQL Server過濾資料的方法SQLServer
- 【SQL Server中SMO的簡單使用】SQLServer
- asp.net SQL Server 儲存過程分頁及程式碼呼叫ASP.NETSQLServer儲存過程
- 在python中定義[]呼叫的方法Python
- Sql Server 資料庫中呼叫dll檔案的過程SQLServer資料庫
- 在全文索引中同義詞的使用(SQL SERVER 2005)索引SQLServer
- Create CLR objects CS.sqlObjectSQL
- 在rhel和CentOS上安裝SQL Server的方法CentOSSQLServer