今天的博文是學習CLR存儲過程,一個簡單的例子,學會怎樣創建,編譯,布署在SQL中。CLR能做一些T-SQL無法做的事情,很多情況之后,它比T-SQL快。打開VS2013,創建一個新專案,參考下面5個步驟:
如果你想寫好的CLR存儲過程布署在SQL2008上,上面標記2選擇.NET Framework3.5。
創建一個新item:創建一個存儲過程的類別:
點擊標記12的銨鈕之后,在VS中將產生一個空白的存儲過程類別:
接下來,我們就可以在標記13處寫存儲過程了。下面是可復制代碼:
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 Code
BUILD Soluton:Build成功,可以看到output信息:
下面是對SQL的操作,打開Microsoft SQL Server Management Studio 2014,找到對應的數據庫,然后按標記1至標記4進行操作,標記3是按mouse右鍵才能顯示標記4。
在Assembly對話窗口中,在標記1中,找到剛才編譯好的DLL,然后點標記3"OK"銨鈕即可。
在數據庫的中,可看到添加好的Assembly:
OK,最后一個步驟布署,創建存儲過程:
成功之后,我們會到一個帶一把鎖的存儲過程:大功告成?。?!運執行一下我們創建好的CLR存儲過程EXECUTE [dbo].[GetFruitAll],它沒有預期結果,出現一個異常:Execution of user code in the .NET Framework is disabled. Enable "clr enabled" configuration option.
此時,我們需要
sp_configure 'clr enabled', 1GORECONFIGUREGOView Code
再次執行CLR存儲過程,得到我們想要的結果:
新聞熱點
疑難解答