程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL ServerCLR全功略之一---CLR介紹和配置

SQL ServerCLR全功略之一---CLR介紹和配置

編輯:關於SqlServer
Microsoft SQL Server 現在具備與 Microsoft Windows .Net Framework 的公共語言運行時 (CLR) 組件集成的功能。CLR 為托管代碼提供服務,例如跨語言集成、代碼訪問安全性、對象生存期管理以及調試和分析支持。對於 SQL Server 用戶和應用程序開發人員來說,CLR 集成意味著您現在可以使用任何 .NET Framework 語言(包括 Microsoft Visual Basic .Net 和 Microsoft Visual C#)編寫存儲過程、觸發器、用戶定義類型、用戶定義函數(標量函數和表值函數)以及用戶定義的聚合函數。
下面列出了這一集成的其中一些主要優點:

 更好的編程模型。
 改進了安全和安全性。
 能夠定義數據類型和聚合函數。
 通過標准化環境簡化了開發。
 具備改善性能和可擴展性的潛力。
既然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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved