国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

有關(guān)SQL Server 2005 CLR

2024-08-31 00:49:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
菜鳥(niǎo)學(xué)堂:

  在sql server 2005的許多被大力推薦的特性里面,有一項(xiàng)可能對(duì)那些使用sqlserver 工作的編程人員最實(shí)用的是common language runtime,或者簡(jiǎn)寫(xiě)為clr。clr可以讓編程人員直接在sql server中創(chuàng)建存儲(chǔ)過(guò)程、觸發(fā)器,用戶自定義函數(shù),集合體和類型。clr有很多的承諾,但是也有一些缺陷。

  關(guān)于clr的重要性有一些主要的原因。首先,隨著sql server 編程技術(shù)的成熟,代碼編寫(xiě)人員陷入了sql server自身的一些限制之中,并且在很大程度上依賴外部的代碼來(lái)執(zhí)行一些繁重的移植。t-sql (事務(wù)處理sql)在返回?cái)?shù)據(jù)集方面很好,但是除了這個(gè)之外則表現(xiàn)不佳。clr使得問(wèn)題的解決有了可能,并且在sql server內(nèi)部進(jìn)行數(shù)據(jù)操作,而這些原本需要一個(gè)完全獨(dú)立的程序來(lái)實(shí)現(xiàn)的。.net的操作代碼和執(zhí)行速度比sql server/t-sql好得多;.net中的同一位的代碼可以運(yùn)行更快地運(yùn)行許多次,當(dāng)它是二進(jìn)制的,而不是作為存儲(chǔ)過(guò)程來(lái)構(gòu)建時(shí)。

  使用clr的另一個(gè)巨大的好處就是安全。所有的代碼都在運(yùn)行前檢測(cè)類型和安全權(quán)限。例如,先前沒(méi)有被寫(xiě)入的內(nèi)存是不允許被問(wèn)題中的代碼讀取的。clr也很完善;.net框架中的每樣?xùn)|西都可以從存儲(chǔ)過(guò)程、觸發(fā)器或者用戶函數(shù)進(jìn)行訪問(wèn)——除了處理類似用戶接口的類,它在sql server是無(wú)論如何不會(huì)有用的。

  要防止clr代碼胡亂運(yùn)行,微軟為clr代碼的調(diào)用創(chuàng)建了一個(gè)三層的安全模型:safe, external_access 和 unsafe。safe權(quán)限集合在本質(zhì)上與傳統(tǒng)的存儲(chǔ)過(guò)程能夠做的事情一樣。在sql server之外不能對(duì)其進(jìn)行任何修改。external_access允許通過(guò).net對(duì)注冊(cè)表和文件系統(tǒng)進(jìn)行訪問(wèn)。unsafe正如其名。標(biāo)記為unsafe的代碼不能做任何事情,并且它實(shí)際上是不應(yīng)該在調(diào)試或者實(shí)驗(yàn)環(huán)境之外使用的。大多數(shù)的編程人員應(yīng)該永遠(yuǎn)都不需要用到高于external_access級(jí)別的任何東西。(如果你需要在存儲(chǔ)過(guò)程或者函數(shù)的環(huán)境中與文件系統(tǒng)或者注冊(cè)表對(duì)話,這有可能意味著你需要重新考慮你嘗試的邏輯了。)

  然而,clr并不是適合一切。一方面,它可能適合那些不容易、需要進(jìn)行編程,在t-sql中實(shí)現(xiàn)的環(huán)境。許多簡(jiǎn)單的操作可以在t-sql以存儲(chǔ)過(guò)程的方式完成,并且不需要擴(kuò)展到外部進(jìn)程。這意味著上下文交換和額外的事務(wù)開(kāi)銷,這兩項(xiàng)中的任何一項(xiàng)開(kāi)銷都能首先抹消你使用clr獲得的速度提升。clr最好用于替代擴(kuò)展存儲(chǔ)過(guò)程——例如,那些必須封閉在數(shù)據(jù)庫(kù)中,但是卻非常麻煩,無(wú)法用t-sql從容完成,同時(shí)又不能輕松移動(dòng)到業(yè)務(wù)邏輯末尾的事情。

  另一個(gè)可能的缺點(diǎn)就是:正如sql的領(lǐng)袖rod paddock在他的blog中指出的,如果你講業(yè)務(wù)邏輯中的某個(gè)元素移動(dòng)到數(shù)據(jù)庫(kù),那就可能會(huì)引起可測(cè)量性的問(wèn)題。畢竟,sql server 更適合于按比例提高的單個(gè)大型機(jī)器,而不是橫跨在幾個(gè)比較小的機(jī)器(通常是按照業(yè)務(wù)比例來(lái)的)上。這一點(diǎn)指出了有選擇的使用clr有多重要。t-sql簡(jiǎn)潔、有效;clr/.net昂貴并且范圍廣泛。正確的工作選擇正確的工具,盡管擁有眾多選擇也不錯(cuò)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南京市| 新乡市| 平阳县| 东乡族自治县| 罗城| 白水县| 建水县| 广州市| 邵阳县| 唐河县| 增城市| 汶上县| 奈曼旗| 三台县| 新宾| 资兴市| 石河子市| 靖州| 甘南县| 林西县| 伊宁县| 锡林郭勒盟| 林周县| 安图县| 垦利县| 贡山| 洪洞县| 建宁县| 洛扎县| 霍城县| 佛山市| 洛隆县| 鱼台县| 哈尔滨市| 洛扎县| 安徽省| 铜梁县| 蕉岭县| 霍林郭勒市| 泸水县| 黄石市|