新聞中心
本文介紹.Net CLR,其中講解了在SQL Server 中創(chuàng)建.Net CLR函數(shù)的幾個(gè)步驟,還有具體的實(shí)例等等。

創(chuàng)新互聯(lián)公司基于成都重慶香港及美國(guó)等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動(dòng)大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)雅安機(jī)房托管報(bào)價(jià),主機(jī)托管價(jià)格性價(jià)比高,為金融證券行業(yè)服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。
可以在SQL Server 實(shí)例中創(chuàng)建可在 Microsoft .NET Framework 公共語(yǔ)言運(yùn)行時(shí) (CLR) 中創(chuàng)建的程序集中進(jìn)行編程的數(shù)據(jù)庫(kù)對(duì)象??梢猿浞掷霉舱Z(yǔ)言運(yùn)行時(shí)所提供的豐富的編程模式的數(shù)據(jù)庫(kù)對(duì)象包括聚合函數(shù)、函數(shù)、存儲(chǔ)過(guò)程、觸發(fā)器以及類型。
在SQL Server 中創(chuàng)建.Net CLR函數(shù)分為下列幾個(gè)步驟:
使用 .NET Framework 支持的語(yǔ)言將函數(shù)定義為類的靜態(tài)方法。然后,使用適當(dāng)?shù)恼Z(yǔ)言編譯器編譯該類,在 .NET Framework 中生成程序集。使用 CREATE ASSEMBLY 語(yǔ)句在 SQL Server 中注冊(cè)程序集。通過(guò)使用 CREATE FUNCTION 語(yǔ)句創(chuàng)建引用注冊(cè)程序集的函數(shù)。
注意:
在Microsoft Visual Studio 中部署 SQL Server 項(xiàng)目將在為該項(xiàng)目指定的數(shù)據(jù)庫(kù)中注冊(cè)程序集。部署項(xiàng)目時(shí),還會(huì)在數(shù)據(jù)庫(kù)中為使用 SqlFunction 屬性注釋的所有方法創(chuàng)建.Net CLR函數(shù)。
注意:
默認(rèn)情況下,關(guān)閉 SQL Server 執(zhí)行.Net CLR代碼的功能。您可以創(chuàng)建、更改和刪除引用托管代碼模塊的數(shù)據(jù)庫(kù)對(duì)象,但是除非通過(guò)使用 sp_configure (Transact-SQL) 啟用了 clr enabled 選項(xiàng),否則這些引用將不會(huì)在 SQL Server 中執(zhí)行。
訪問(wèn)外部資源
可以使用.Net CLR函數(shù)訪問(wèn)外部資源,例如文件、網(wǎng)絡(luò)資源、Web 服務(wù)及其他數(shù)據(jù)庫(kù)(包括 SQL Server 遠(yuǎn)程實(shí)例)。這可以通過(guò)使用 .NET Framework 中的各種類(例如 System.IO、System.WebServices 及 System.Sql 等)來(lái)實(shí)現(xiàn)。
至少應(yīng)將包含此類函數(shù)的程序集配置為設(shè)置了 EXTERNAL_ACCESS 權(quán)限,才能實(shí)現(xiàn)此目的??梢允褂?SQL 客戶端托管訪問(wèn)接口訪問(wèn) SQL Server 遠(yuǎn)程實(shí)例。但在.Net CLR函數(shù)中不支持與發(fā)起服務(wù)器的環(huán)回連接。
示例如下:
.Net CLR第一步:
.Net CLR第一步
.Net CLR第二步:
- public class Class1
- {
- public static string MySplit(int filedIndex, string filedName)
- {
- //filedIndex從1開(kāi)始
- try
- {
- if (filedIndex == null || filedIndex <= 0 || filedName == null ||
- filedName == "")
- {
- return "";
- }
- else
- {
- return filedName.Split('|')[filedIndex - 1].Trim();
- }
- }
- catch
- {
- return "";
- }
- }
- }
- //得到程序集 ClassLibrary1.dll
.Net CLR第三步:
- CREATE ASSEMBLY Class1AUTHORIZATION [dbo]FROM
- 'C:\ClassLibrary1.dll'WITH PERMISSION_SET = SAFE
.Net CLR第四步:
- CREATE FUNCTION dbo.MySplit(@filedIndex AS INT,@filedName AS
- NVARCHAR(255))RETURNS NVARCHAR(255)ASEXTERNAL NAME Class1.Class1.MySplit
.Net CLR第五步(測(cè)試):
- select dbo.MySplit(2,name) from mytesttable
.Net CLR測(cè)試通過(guò)!
分享題目:深入解析.NetCLR函數(shù)使用舉例
網(wǎng)頁(yè)URL:http://www.dlmjj.cn/article/ccciddd.html


咨詢
建站咨詢
