SQL Server CLR全功略之一---CLR介绍和配置
?? Microsoft SQL Server 現(xiàn)在具備與 Microsoft Windows .NET Framework 的公共語(yǔ)言運(yùn)行時(shí) (CLR) 組件集成的功能。CLR 為托管代碼提供服務(wù),例如跨語(yǔ)言集成、代碼訪問(wèn)安全性、對(duì)象生存期管理以及調(diào)試和分析支持。對(duì)于 SQL Server 用戶和應(yīng)用程序開(kāi)發(fā)人員來(lái)說(shuō),CLR 集成意味著您現(xiàn)在可以使用任何 .NET Framework 語(yǔ)言(包括 Microsoft Visual Basic .NET 和 Microsoft Visual C#)編寫存儲(chǔ)過(guò)程、觸發(fā)器、用戶定義類型、用戶定義函數(shù)(標(biāo)量函數(shù)和表值函數(shù))以及用戶定義的聚合函數(shù)。 下面列出了這一集成的其中一些主要優(yōu)點(diǎn):
- ?更好的編程模型。
- ?改進(jìn)了安全和安全性。
- ?能夠定義數(shù)據(jù)類型和聚合函數(shù)。
- ?通過(guò)標(biāo)準(zhǔn)化環(huán)境簡(jiǎn)化了開(kāi)發(fā)。
- ?具備改善性能和可擴(kuò)展性的潛力。
既然CLR這么靈活,那么我們?nèi)绾卧赥-SQL和CLR之間做出選擇呢?一般情況下,我們當(dāng)以T-SQL為主,在下面幾種情況下,應(yīng)該考慮使用CLR: SQL中涉及大量的邏輯判斷和邏輯運(yùn)算。比如需要在數(shù)據(jù)庫(kù)級(jí)別自定義加密算法,解密算法等。 T-SQL無(wú)法處理需求。比如需要在SQL中進(jìn)行正規(guī)表達(dá)式的判斷等。 邏輯判斷過(guò)于復(fù)雜,需要使用大量游標(biāo)進(jìn)行處理。這種情況一般要進(jìn)行測(cè)試,因?yàn)镃LR不一定比游標(biāo)快,關(guān)鍵是看你怎么寫。
?
下面介紹一下如何開(kāi)啟CLR和兩種創(chuàng)建CLR的方法。關(guān)于如何在VS中編寫CLR程序,請(qǐng)看后續(xù)章節(jié)。 開(kāi)啟CLR。 在SQL Server2005/2008里面,CLR默認(rèn)是關(guān)閉的。可以使用如下SQL語(yǔ)句開(kāi)啟CLR。 sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'clr enabled', 1; GO RECONFIGURE; GO
?
創(chuàng)建CLR。 方法一:使用DLL文件進(jìn)行創(chuàng)建 CREATE ASSEMBLY AssemblyName from ‘DLLPath’ 例如:CREATE ASSEMBLY AssemblyName from ‘c:/hello.dll’
方法二:使用文件16進(jìn)制流進(jìn)行創(chuàng)建 CREATE ASSEMBLY AssemblyName from 文件十六進(jìn)制流 例如:CREATE ASSEMBLY AssemblyName from 0x123344…… 其中0x12334……是文件c:/hello.dll的十六進(jìn)制流。可以使用UltraEdit等編輯器把相關(guān)dll文件的十六進(jìn)制流copy出來(lái)。
相比較,方法一簡(jiǎn)單,屬于外部引用,通過(guò)創(chuàng)建就可以知道是哪個(gè)文件。但是dll文件路徑必須可以被SQLServer所訪問(wèn),且部署時(shí)dll要隨SQLServer變化而變化。 方法二是把流寫進(jìn)SQLServer中,從一定程度上屏蔽了代碼。如果此dll不大的話,推薦使用方法二來(lái)創(chuàng)建CLR。
總結(jié)
以上是生活随笔為你收集整理的SQL Server CLR全功略之一---CLR介绍和配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 流程控制_月隐学python第4课
- 下一篇: mysql基础_月隐学python第22