亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

DBA眼中的CLR

2024-07-21 02:52:31
字體:
來源:轉載
供稿:網友

SQL Server 2005引入CLR之後,開發者們熱情地接受了它。 CLR作爲一個強有力的工具,開發者可在數據庫中利用它調用其他面嚮對象語言編寫而成的功能。

從DBA的視角來看,CLR的引入淡化了編譯型代碼與數據庫代碼的區別。它引發了在部署、管理CLR代碼以及安全性上,開發者和DBA的角色問題。在某種程度上,它也淡化了在多層架構的系統中,業務邏輯層和數據訪問層的區間。

對許多組織而言,實現CLR需要決策有關開發過程和它們涉及到的角色。如果你準備執行CLR,你需要足夠多的非技術細節信息來印證這些決定。

最後,我將指出如何實現CLR,討論CLR代碼的利弊,以及CLR技術給SQL Server管理和安全方面帶來的影響。我也將描述哪些情況適合用CLR,而哪些情況可能不適合。

創建與部署CLR

CLR是一個程序模型,它允許開發者用面嚮對象語言來寫編寫代碼,然後像T-SQL存儲過程、函數或觸發器一樣去使用它。一般創建過程如下: 1、創建VS工程,代碼可以用C#/VB.Net編寫;

2、代碼被編譯後,直接從VS部署到目標數據庫。編譯後會產生一個DLL文件,DLL是一個包含編譯後代碼的可運行的文件。部署後,將會在sys.assemblies視圖和其他相關視圖中插入對應程序集信息,

3、通過對程序集運用EXTERNAL NAME選項,一個或多個T-SQL對象將在數據爲中被創建。這些對象對稱爲原型,一個原型能被定義爲存儲過程,函數,用戶自定義聚集函數或用戶自定義類型。原型中不包含代碼,它只是一個簡單的可被其它數據庫代碼調用的入口,被調用時,DLL中編譯後的代碼將會運行。

通常,當你從VS編譯和部署時,上述所有步驟都會被執行,但你也可以手動分開執行每一步。

現代的面嚮對象語言有一些對T-SQL來說是非常困難甚至無法實現的功能。CLR則提供了一種在數據庫中運用這些語言豐富特性的方式。對於計算或迭代性的操作,CLR通常提供比T-SQL更優的性能。CLR代碼和SQL Server在同一個內存上下文中運行,所以它運行得非常有效率。

CLR代碼是被託管的代碼,這意味著它在『CLR運行時』中運行時,可以確保不會出現代碼運行時使服務器不穩定的情況。盡管這是好事,但任何形式的虛擬化都會有一定程序的開銷,CLR如果運用不當還是會影響性能的。盡管編譯後的代碼在SQL內存空間中會運行得很有效率,但T-SQL仍然是繁重工作的最好選擇,如果要訪問和返回大批量的數據,CLR並不是一個好的選擇。

總之一句話,T-SQL處理集合類操作更加有效率,而CLR對迭代、過程、計算類操作更加在行。當然也會有例外的時候。

管理CLR

有時DBA與CLR打的第一個交道就是有人提議在服務器上啟用CLR。雖然啟用CLR只是在服務的選項中啟用CLR配置項這麼簡單,但在啟動它之前你需要考慮很多問題。

將腳本部署到數據庫是DBA的傳統職責,DBA同時也要保證腳本正常工作而且不影響性能或引發服務器上的其它問題。然而,CLR代碼一般是從VS開發環境中直接部署到數據庫中的,而DBA一般不使用VS,這似乎意味著開發人員比DBA更適合去部署CLR代碼。

開發人員可以編寫編譯過後的代碼在SQL Server中像SQL代碼一樣運行,DBA或許會對此感覺不爽,但DBA仍然可以控制誰可以加載CLR程序集,在什麼安全級別下運行CLR功能。

CLR安全性

默認的,只有sysadmin、db_ower、ddl_admin角色的用戶有權限去運行程序集相關的DDL語句。這個權限可以賦給其他角色和用戶。另外,如下三種權限集可以讓你設置程序集本身的三種安全級別:

SAFE。此安全級別只允許訪問本地數據和內部計算。對系統資源,比如文件、網絡、環境變量或者註冊表的訪問是禁止的。任何有創建程序集權限的用戶都可以創建一個SAFE級別的程序集。如果CREATE ASSEMBLY語句沒有顯示指定安全級別,SAFE將是默認的級別。

EXTERNAL access。此安全級別允許程序集訪問外部資源。擁有EXTERNAL ACCESS權限的用戶才可以創建此安全級別的信息集。

UNSAFE。在將程序集設為UNSAFE時請三思,此級別的程序集在SQL Server內外都擁有不受約束的訪問權限。在UNSAFE程序集裏的代碼也可能是不受管理的代碼,意味著它有讓服務器不穩定的可能。僅sysadmins用戶組的用戶可以登陸UNSAFE的程序集。

默認的,CLR代碼都是在SQL SERVER服務帳號的安全上下文運行,如果你要訪問SQL Server之外的資源,這就會有問題,最好的做法是不超過服務帳號的權限。但是CLR代碼可以通過模擬其他Windows帳號來運行。UNSAFE和EXTERNAL ACCESS安全級別的程序集有這種能力??梢詣摻ㄟ@種程序集的人必須是深受公司信任的。

理解CLR元數據

在一個啟用了CLR選項的環境中,DBA應該對如下5個包含了元數據信息的系統視圖非常熟悉: sys.assembiles. 此視圖每行記錄對應一個程序集。它包含了程序集的一些屬性,比如名稱、安全級別和創建日期。 sys.assembly_files. 對數據庫中每一個程序集,這個視圖都包含了一行信息說明其源文件、DLL文件。 sys.assembly_modules. 一個程序集可能包含多個類,比如存儲過程和函數。程序集裏的類可能包含多個實現不同功能的代碼模塊。這個視圖將各自獨立的代碼模塊ID與引用它們的數據庫對象ID關聯在一起了。如下查詢可以查出每個CLR數據庫對象引用的程序集的類和方法:

SELECT OBJECT_NAME(m.object_id) AS db_object ,a.name AS assembly ,m.assembly_class ,m.assembly_methodFROM sys.assembly_modules mINNER JOIN sys.assemblies a ON a.assembly_id = m.assembly_id

sys.assembly_references.程序集之間的相互引用依賴關係。 sys.module_assembly_usages將程序集的ID與引用它們的數據庫對象ID,關係起來了。

SELECT OBJECT_NAME(object_id) AS db_object ,a.name AS assemblyFROM sys.module_assembly_usages u INNER JOIN sys.assemblies a ON a.assembly_id = u.assembly_id

移除CLR程序集

VS可以很方便創建和部署CLR程序集到SQL Server中,但並沒有同樣方便的工具去卸載它們。你必須有順序地手動將它們移動。 在移除某程序集之前可以通過查看依賴項先移動那些引用此程序集的T-Sql對象,可以Sp_Depends或在對象資源管理器中右鍵查看。

更好的改變

純T-SQL的數據庫編程時代正在發生變化,CLR正是這一跡象的例子。盡管有人會有點排斥,但正是變化讓DBA生涯變得有趣。CLR真正突破了T-SQL在某些方面的限制。兩種模式的混合編程能力是一個強大的工具,DBA和開發者都應該掌握它們。

原文鏈接

附常用查詢

-- Assembly Query SELECT * FROM sys.assembly_modules;SELECT * FROM sys.assemblies;SELECT * FROM sys.assembly_files;-- CLR Object In DatabaseSELECT * FROM sys.objects WHERE type_desc LIKE 'CLR%';-- 哪些系統對象引用了CLR程序集SELECT OBJECT_NAME(object_id) AS [Object_Name],b.Name AS Assembly_NameFROM sys.module_assembly_usages aINNER JOIN sys.assemblies b ON a.assembly_id = b.assembly_id;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品777| 亚洲国产精品专区久久| 成人伊人精品色xxxx视频| 97在线视频免费看| 国产在线视频欧美| 深夜福利日韩在线看| 欧美精品免费看| 亚洲精品一区二区三区不| 这里精品视频免费| 色综合色综合网色综合| 亚洲美女在线看| 91九色综合久久| 日韩av在线导航| 日韩欧美在线视频观看| 日本久久久久久| 久久久国产一区二区三区| 久久久久女教师免费一区| 久久久日本电影| 日韩av在线免费播放| 欧美视频在线看| 91中文字幕一区| 国产精品永久免费观看| 亚洲免费电影在线观看| 97色在线视频| 亚洲在线视频福利| 成人福利网站在线观看| 日韩一区二区久久久| 亚洲欧美自拍一区| 亚洲黄色av女优在线观看| 国产精品视频色| 日韩欧亚中文在线| 久久久久久美女| 最近2019年日本中文免费字幕| 亚洲成人激情图| 欧美丰满少妇xxxx| 国产精品久久久久久久久久东京| 日韩一区二区三区xxxx| 国产+成+人+亚洲欧洲| 亚洲第一区第一页| 欧美国产亚洲精品久久久8v| 欧美第一黄色网| 日韩亚洲精品电影| 久久精品久久久久久国产 免费| 日韩精品极品视频免费观看| 久久成人这里只有精品| 国产综合色香蕉精品| 欧美黄色片免费观看| 狠狠久久五月精品中文字幕| 国产精品久久久久久亚洲调教| 久久99精品国产99久久6尤物| 成人久久一区二区| 精品日韩美女的视频高清| 日韩在线视频国产| 精品国模在线视频| 久久久99免费视频| 国产精品偷伦免费视频观看的| 欧美激情a在线| 粉嫩老牛aⅴ一区二区三区| 在线播放国产一区中文字幕剧情欧美| www国产91| 欧美性xxxxxx| 日韩有码在线电影| 国产精品第三页| 欧美亚洲在线观看| 欧美一级片在线播放| 综合网日日天干夜夜久久| 久久九九有精品国产23| 日韩在线www| 96pao国产成视频永久免费| 色综合色综合网色综合| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品欧美日韩一区二区| 久久久久久久亚洲精品| 亚洲视频在线看| 中文字幕欧美亚洲| 亚洲精品日韩丝袜精品| 精品成人乱色一区二区| 欧美乱人伦中文字幕在线| 日韩精品中文在线观看| 国产精品久久久久免费a∨| 亚洲影院色在线观看免费| 日本sm极度另类视频| 日本最新高清不卡中文字幕| 日韩高清欧美高清| 久久精品这里热有精品| 久久6免费高清热精品| 国产丝袜一区二区三区| 亚洲少妇激情视频| 国产精品入口夜色视频大尺度| 国产精品成人在线| 国产视频久久久| 国内精品小视频在线观看| 欧美一级大片视频| 国产美女久久精品香蕉69| 亚洲国产精品yw在线观看| 亚洲精品久久7777777| 中文字幕亚洲自拍| 亚洲性日韩精品一区二区| 久久精品国产电影| 久久久久国色av免费观看性色| 欧美激情手机在线视频| 97在线免费观看| 亚洲三级黄色在线观看| 国产亚洲成av人片在线观看桃| 青草青草久热精品视频在线网站| 伊人久久免费视频| 国产区精品在线观看| 国产成人aa精品一区在线播放| 狠狠躁夜夜躁久久躁别揉| 成人免费视频在线观看超级碰| 国产成人av在线播放| 日韩精品在线私人| 久久理论片午夜琪琪电影网| 日韩亚洲在线观看| 久久久久久久成人| 国产精品中文字幕久久久| 精品国产乱码久久久久久虫虫漫画| 日本精品久久久久久久| 精品国内产的精品视频在线观看| 中文字幕精品久久久久| 国产日韩精品视频| 91国偷自产一区二区三区的观看方式| 欧美激情xxxxx| 久久精品成人欧美大片| 精品国产一区二区三区久久狼5月| 国产一区二区在线免费视频| www.欧美精品一二三区| 色妞一区二区三区| 欧美激情在线播放| 狠狠色噜噜狠狠狠狠97| 78m国产成人精品视频| 国产午夜精品全部视频播放| 97在线精品国自产拍中文| 一区二区亚洲精品国产| 亚洲性视频网址| xxxxx91麻豆| 欧美高跟鞋交xxxxhd| 日韩电视剧在线观看免费网站| 免费97视频在线精品国自产拍| 日韩av资源在线播放| 日本久久久久久久| 国产精品入口免费视频一| 日本不卡免费高清视频| 在线视频欧美性高潮| 久久久久久久久久久久av| 欧美俄罗斯乱妇| 最近中文字幕mv在线一区二区三区四区| 米奇精品一区二区三区在线观看| 中文字幕成人精品久久不卡| 国产成人精品最新| 91精品国产综合久久香蕉的用户体验| 欧美极品第一页| 久久91精品国产91久久久| 日韩一区二区精品视频| 国产成人精品一区二区在线| 日韩国产欧美区| 欧美一级高清免费播放| 亚洲男人的天堂网站| 一区二区欧美激情| 91在线视频成人| 亚洲欧美日韩视频一区| 国产精品人人做人人爽| 最新69国产成人精品视频免费| 国产精品久久久一区|