SQL Server CLR全功略之一---CLR介紹和配置
- 更好的程式設計模型。
- 改進了安全和安全性。
- 能夠定義資料型別和聚合函式。
- 通過標準化環境簡化了開發。
- 具備改善效能和可擴充套件性的潛力。
既然CLR這麼靈活,那麼我們如何在T-SQL和CLR之間做出選擇呢?一般情況下,我們當以T-SQL為主,在下面幾種情況下,應該考慮使用CLR: SQL中涉及大量的邏輯判斷和邏輯運算。比如需要在資料庫級別自定義加密演算法,解密演算法等。 T-SQL無法處理需求。比如需要在SQL中進行正規表示式的判斷等。 邏輯判斷過於複雜,需要使用大量遊標進行處理。這種情況一般要進行測試,因為CLR不一定比遊標快,關鍵是看你怎麼寫。
下面介紹一下如何開啟CLR和兩種建立CLR的方法。關於如何在VS中編寫CLR程式,請看後續章節。 開啟CLR。 在SQL Server2005/2008裡面,CLR預設是關閉的。可以使用如下SQL語句開啟CLR。 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'clr enabled', 1; GO RECONFIGURE; GO
建立CLR。 方法一:使用DLL檔案進行建立 CREATE ASSEMBLY AssemblyName from ‘DLLPath’ 例如:CREATE ASSEMBLY AssemblyName from ‘c:/hello.dll’
方法二:使用檔案16進位制流進行建立 CREATE ASSEMBLY AssemblyName from 檔案十六進位制流 例如:CREATE ASSEMBLY AssemblyName from 0x123344…… 其中0x12334……是檔案c:/hello.dll的十六進位制流。可以使用UltraEdit等編輯器把相關dll檔案的十六進位制流copy出來。
相比較,方法一簡單,屬於外部引用,通過建立就可以知道是哪個檔案。但是dll檔案路徑必須可以被SQLServer所訪問,且部署時dll要隨SQLServer變化而變化。 方法二是把流寫進SQLServer中,從一定程度上遮蔽了程式碼。如果此dll不大的話,推薦使用方法二來建立CLR。
- 更好的程式設計模型。
- 改進了安全和安全性。
- 能夠定義資料型別和聚合函式。
- 通過標準化環境簡化了開發。
- 具備改善效能和可擴充套件性的潛力。
既然CLR這麼靈活,那麼我們如何在T-SQL和CLR之間做出選擇呢?一般情況下,我們當以T-SQL為主,在下面幾種情況下,應該考慮使用CLR: SQL中涉及大量的邏輯判斷和邏輯運算。比如需要在資料庫級別自定義加密演算法,解密演算法等。 T-SQL無法處理需求。比如需要在SQL中進行正規表示式的判斷等。 邏輯判斷過於複雜,需要使用大量遊標進行處理。這種情況一般要進行測試,因為CLR不一定比遊標快,關鍵是看你怎麼寫。
下面介紹一下如何開啟CLR和兩種建立CLR的方法。關於如何在VS中編寫CLR程式,請看後續章節。 開啟CLR。 在SQL Server2005/2008裡面,CLR預設是關閉的。可以使用如下SQL語句開啟CLR。 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'clr enabled', 1; GO RECONFIGURE; GO
建立CLR。 方法一:使用DLL檔案進行建立 CREATE ASSEMBLY AssemblyName from ‘DLLPath’ 例如:CREATE ASSEMBLY AssemblyName from ‘c:/hello.dll’
方法二:使用檔案16進位制流進行建立 CREATE ASSEMBLY AssemblyName from 檔案十六進位制流 例如:CREATE ASSEMBLY AssemblyName from 0x123344…… 其中0x12334……是檔案c:/hello.dll的十六進位制流。可以使用UltraEdit等編輯器把相關dll檔案的十六進位制流copy出來。
相比較,方法一簡單,屬於外部引用,通過建立就可以知道是哪個檔案。但是dll檔案路徑必須可以被SQLServer所訪問,且部署時dll要隨SQLServer變化而變化。 方法二是把流寫進SQLServer中,從一定程度上遮蔽了程式碼。如果此dll不大的話,推薦使用方法二來建立CLR。