問題
我們有時會遇到關於CLR函數或存儲過程的需求。例如我們可能需要調用一個存儲過程來獲得某一特定文件夾下的文件列表。我們怎樣使用CLR將文件列表作為一個標准結果集(例如行和列)返回呢?
專家解答
SQL Server 2005和之後的版本集成了CLR(通用語言運行時),它使得我們可以使用Microsoft .NET代碼編寫存儲過程、觸發器、用戶友好的函數、用戶友好的聚合和用戶友好的類型;例如Visual Basic .NET或C#。被增強的各種T-SQL CREATE命令使得我們可以定義一個數據庫對象(例如一個存儲過程)並將我們的.NET代碼與它連接起來。當你執行這個存儲過程的時候,.NET代碼就被執行了。
當編寫一個存儲過程或函數時,返回數據所用的最常見方法是結果集。在這篇技巧中,我們將執行一個存儲過程來獲得某個文件夾的文件列表並將這個列表作為一個具有行和一列的標准結果集返回。我們將執行下面的步驟:
激活CLR。
獲得C#代碼示例。
部署CLR存儲過程。
激活CLR
默認情況下,在SQL Server 2005中CLR沒有激活。你可以通過執行外圍應用配置器(Surface Area Configuration)工具或sp_configure來激活CLR。在外圍應用配置器中點開層級找到CLR Integration,然後點擊復選框來激活它,如下圖所示:
要使用sp_configure來激活CLR,執行下面的腳本:
sp_configure 'clr enabled', 1
GO
reconfigure
GO