2008-09-02 48 views
3

我最近發現可以將.net程序集放在SQL Server> = 2005服務器上,這樣可以在T/SQL語句中調用.net函數。在SQL Server 2005中使用.net程序集

我想知道是什麼使用人發現這些以及他們如何執行?

回答

0

我發現它非常有用。

我使用這種可能性來擴展MSSQL2005 XML相關功能。

如果我沒有記錯,你甚至可以引入你自己的數據類型。

0

如果您需要以某種方式與操作系統進行交互(例如,將消息放入MSMQ中或寫入文件中),通常會使用此選項。如果您有一些已經在.NET中實現的複雜數學或財務計算,並且您不想在T-SQL中重新編寫它們,那麼它也很有用。

3

我創建的SQL 2005中第一個用於CLR的通用用途是一個SQL 2005程序集,它具有各種使用正則表達式執行字符串操作和模式匹配的函數。 SQL 2005中的本地字符串函數可以進行擴充,以便您可以驗證常用格式,例如電話號碼或信用卡號碼,或者在存儲過程中執行臨時正則表達式。

對於確定性用戶定義函數,我發現SQL CLR支持非常高效。

+1

您可以使用SQL#庫(免費和付費版本)http://www.sqlsharp.com/來代替編寫自己的庫。它提供了許多開箱即用的功能。我是免費版的開心用戶:) – 2009-07-17 19:58:28

0

與SQL 2005的CLR集成對用戶定義的函數/用.NET編寫的存儲過程以及用戶定義的數據類型特別有用。例如您可以編寫一個重載數據類型,允許SQL定義對象和引用屬性。例如,您可以編寫一些超級日期時間變體。

0

反對意見,我同意你的意見。對於所有那些在T-SQL中完全不可能實現或幾乎不可實現的事情,組合對於所有這些事情來說都非常棒(通過hackish方法)。

簡單易用是關鍵。請注意以下含義...

  1. 程序集的使用引入了信任/安全性/權限配置問題。

程序集必須定義到數據庫中。如果程序集未簽名,數據庫將不得不允許UNTRUSTED代碼。此數據庫設置在數據庫分離/重新連接時重置。

  1. 程序集的使用會影響SQL Server配置(不僅僅是數據庫)。

要運行程序集,必須首先確保已禁用SQL Server輕量級池。

  1. 對於Assemblies函數,請記住對數據操作保守;特別是在忙碌的桌子上。

如果可以,請避免使用一次試圖影響太多行的Assembly方法。照顧那些在表格觸發器中使用的內容。這些內容中的一些會大幅降低性能。