今天的博文是學(xué)習(xí)CLR存儲(chǔ)過(guò)程,一個(gè)簡(jiǎn)單的例子,學(xué)會(huì)怎樣創(chuàng)建,編譯,布署在SQL中。CLR能做一些T-SQL無(wú)法做的事情,很多情況之后,它比T-SQL快。打開(kāi)VS2013,創(chuàng)建一個(gè)新專案,參考下面5個(gè)步驟:
如果你想寫好的CLR存儲(chǔ)過(guò)程布署在SQL2008上,上面標(biāo)記2選擇.NET Framework3.5。
創(chuàng)建一個(gè)新item:
創(chuàng)建一個(gè)存儲(chǔ)過(guò)程的類別:
點(diǎn)擊標(biāo)記12的銨鈕之后,在VS中將產(chǎn)生一個(gè)空白的存儲(chǔ)過(guò)程類別:
接下來(lái),我們就可以在標(biāo)記13處寫存儲(chǔ)過(guò)程了。
下面是可復(fù)制代碼:

SqlConnection connection = new SqlConnection("context connection=true");connection.Open();string sql = "SELECT [Fruit_nbr],[FruitKind_nbr], [FruitName] FROM [dbo].[Fruit]";SqlCommand command = new SqlCommand(sql, connection);SqlDataReader reader = command.ExecuteReader();SqlContext.Pipe.Send(reader);View CodeBUILD Soluton:
Build成功,可以看到output信息:
下面是對(duì)SQL的操作,打開(kāi)Microsoft SQL Server Management Studio 2014,找到對(duì)應(yīng)的數(shù)據(jù)庫(kù),然后按標(biāo)記1至標(biāo)記4進(jìn)行操作,標(biāo)記3是按mouse右鍵才能顯示標(biāo)記4。
在Assembly對(duì)話窗口中,在標(biāo)記1中,找到剛才編譯好的DLL,然后點(diǎn)標(biāo)記3"OK"銨鈕即可。
在數(shù)據(jù)庫(kù)的中,可看到添加好的Assembly:
OK,最后一個(gè)步驟布署,創(chuàng)建存儲(chǔ)過(guò)程:
成功之后,我們會(huì)到一個(gè)帶一把鎖的存儲(chǔ)過(guò)程:
大功告成?。?!運(yùn)執(zhí)行一下我們創(chuàng)建好的CLR存儲(chǔ)過(guò)程EXECUTE [dbo].[GetFruitAll],它沒(méi)有預(yù)期結(jié)果,出現(xiàn)一個(gè)異常:Execution of user code in the .NET Framework is disabled. Enable "clr enabled" configuration option.
此時(shí),我們需要

sp_configure 'clr enabled', 1GORECONFIGUREGOView Code
再次執(zhí)行CLR存儲(chǔ)過(guò)程,得到我們想要的結(jié)果:
新聞熱點(diǎn)
疑難解答
圖片精選