SQL Server CLR全功略之一---CLR介绍和配置
?? 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。
總結
以上是生活随笔為你收集整理的SQL Server CLR全功略之一---CLR介绍和配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 流程控制_月隐学python第4课
- 下一篇: 分支和循环_月隐学python第5课