日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

SQL Server 2005中的CLR集成(3)_Mssql數(shù)據(jù)庫教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:SQL SQL Server 2008中的新日期數(shù)據(jù)類型
這篇文章主要介紹了Oracle數(shù)據(jù)庫到SQL Server數(shù)據(jù)庫主鍵的遷移過程,具體內(nèi)容請(qǐng)參考下文。 由于項(xiàng)目需要要將以前Oracle的數(shù)據(jù)庫轉(zhuǎn)化為SQL Server,今天利用SQL Server的DTD進(jìn)行數(shù)據(jù)庫的遷移,但導(dǎo)入以后發(fā)現(xiàn)只導(dǎo)入了表結(jié)構(gòu)和數(shù)據(jù),而表的一些主鍵約束都沒導(dǎo)過

以下為引用的內(nèi)容:

Enter Category ID:

AutoGenerateColumns="false" DataSourceID="productSource">

SelectCommand="GetProducts" SelectCommandType="StoredProcedure"
ConnectionString="

正如這個(gè)示例所示,調(diào)用CLR存儲(chǔ)過程與調(diào)用T-SQL存儲(chǔ)過程沒有任何不同。二者都按照相同的步驟,而沒有任何改變。結(jié)果應(yīng)該顯示Production.Product表中Name和ProductNumber列的所有記錄。在這個(gè)示例中,返回了Name和ProductNumber列的所有行,因?yàn)椴樵儧]有為返回單個(gè)行而設(shè)置特定ProductID。因此,返回所有行。

4.2 SQL Server中的T-SQL和受管代碼

一種很吸引人的想法是認(rèn)為,開發(fā)人員能夠避免編寫業(yè)務(wù)層,而在SQL Server中使用受管代碼編寫所有代碼。然而,重要的是記住SQLCLR不是用于代替業(yè)務(wù)層。因此,正由于能夠在SQL Server中編寫C#或者VB.NET代碼,所以不希望將SQL Server作為托管所有.NET代碼的應(yīng)用程序服務(wù)器。SQLCLR是專用于在SQL Server中實(shí)現(xiàn)特定目的,而此時(shí)T-SQL可能不是正確的選擇。

注意,開發(fā)人員應(yīng)該將SQLCLR作為一種無法使用T-SQL顯式表達(dá)邏輯的備選解決方案——也不能作為實(shí)現(xiàn)業(yè)務(wù)層邏輯的替代品。那么根據(jù)這個(gè)規(guī)則,開發(fā)人員應(yīng)該首先使用T-SQL解決問題。

T-SQL比較適合基于集合的操作,例如表格式數(shù)據(jù),SQLCLR比較適合實(shí)現(xiàn)過程性代碼和遞歸操作。然而,真正是否更加適合取決于多種因素。通過以下三條規(guī)則可很好的比較總結(jié)T-SQL和SQLCLR:(1)基于集合的操作最好使用T-SQL。(2)使用程序性和遞歸代碼最好使用SQLCLR。(3)存在多個(gè)有關(guān)因素可能影響以上兩條規(guī)則,例如編譯CLR代碼和解釋性的T-SQL代碼,在SQL Server中加載時(shí)的開銷,過程中所需的數(shù)據(jù)訪問,輔助函數(shù)庫等等。這種情況由存在多種原因造成,其中多數(shù)由于數(shù)據(jù)庫內(nèi)部的CLR與Windows計(jì)算機(jī)中的CLR受到了不同的約束限制。Windows計(jì)算機(jī)中的CLR由操作系統(tǒng)來運(yùn)行,其與SQL Server中運(yùn)行的同一CLR不同。主要的不同點(diǎn)是SQL Server所擔(dān)負(fù)的責(zé)任,管理線程調(diào)用,同步,鎖定和內(nèi)存位置等方面。

Windows計(jì)算機(jī)中的CLR和SQL Server中的CLR之間的另一個(gè)重要不同是,用于加載CLR的引導(dǎo)機(jī)制。SQL Server 2005除非在需要的情況下,否則不會(huì)加載CLR。這是因?yàn)镾QL Server遵循了保護(hù)內(nèi)存,盡量加載任何所需資源的規(guī)則。根據(jù)除非需要,否則不加載CLR的原則,可節(jié)約CLR本來要占據(jù)的數(shù)兆字節(jié)內(nèi)存空間。因此,如果有少量使用CLR的代碼片段,同時(shí)加載CLR,那么由此可能會(huì)影響特定計(jì)算機(jī)的其他操作。

將這樣的責(zé)任都委托給宿主(SQL Server)反而會(huì)帶來有趣的挑戰(zhàn)。就本質(zhì)而言,這意味著運(yùn)行在SQL Server內(nèi)部的個(gè)別操作此時(shí)可能被認(rèn)為具有一定欺詐性,是一個(gè)潛在的安全線程,或者可能降低服務(wù)器安全性。因此,當(dāng)自由使用CLR及其各種操作時(shí),則變得有些危險(xiǎn),那么SQL Server應(yīng)用程序則以一定方式正確的自己實(shí)現(xiàn),即個(gè)別應(yīng)用程序不應(yīng)該以任何方式忽略或者暗中損害服務(wù)器。

通過對(duì)SQL Server內(nèi)部能夠執(zhí)行的.NET代碼操作集合的粒度控制能夠強(qiáng)制SQL Server實(shí)現(xiàn)以上內(nèi)容。這種機(jī)制構(gòu)建于代碼訪問安全(Code Access Security,縮寫為CAS)之上,它是CLR的一部分。微軟開發(fā)人員要花費(fèi)長時(shí)間艱難的查看.NET Framework中的每個(gè)類,將它們分為三種類別(SAFE,EXTERNAL_ACCESS和UNSAFE),這些類別在上面的內(nèi)容中已經(jīng)介紹了。換言之,開發(fā)人員需要告訴SQL Server,根據(jù)所設(shè)置操作,代碼將按照三種類別之一執(zhí)行。如果代碼試圖進(jìn)行一些初始化設(shè)置之外的事情,那么SQL Server會(huì)阻止其執(zhí)行。

小結(jié)

本文重點(diǎn)對(duì)SQL Server 2005中的CLR集成功能進(jìn)行了講解。這的確是一種非常吸引開發(fā)人員的功能,能夠大幅提高開發(fā)效率,減低應(yīng)用程序的維護(hù)修改強(qiáng)度。希望開發(fā)人員能夠熟練的使用這項(xiàng)功能。

分享:解析SQL Server 2008性能和可擴(kuò)展性
1.導(dǎo)言 現(xiàn)今的公司需要易訪問的和可用性好的商業(yè)數(shù)據(jù),以便他們可以在全球市場中獲得一席之地。與易訪問數(shù)據(jù)的這個(gè)需求相呼應(yīng)的,關(guān)系數(shù)據(jù)庫和分析數(shù)據(jù)庫在規(guī)模方面繼續(xù)發(fā)展,內(nèi)嵌數(shù)據(jù)庫和許多產(chǎn)品一起出現(xiàn),并且許多公司將服務(wù)器合并來減輕管理工作。當(dāng)公司

共3頁上一頁123下一頁
來源:模板無憂//所屬分類:Mssql數(shù)據(jù)庫教程/更新時(shí)間:2009-05-17
相關(guān)Mssql數(shù)據(jù)庫教程