本文討論了一些sql server 2005的新特性,這些新特性將幫助你創建一個新型的數據庫應用程序。
隨著microsoft sql server 2005 beta 2的發布,數據庫開發的方式正在改變中。作為一個數據庫開發人員,現在你可以更好的把工作關注在功能、對本機格式的數據的訪問(如xml)、以及利用強大的數據庫服務器創建更復雜的系統上。數據庫開發工作正前所未有的越來越集成,你所需要的所有工具都觸手可及。
.net framework集成
隨著microsoft sqlserver2005 beta2的發布,數據庫編程人員現在可以充分利用microsoft .netframework 類庫和現代編程語言來開發數據庫應用。 通過集成的clr,你可以用.netframework language 里的visual basic.net 和c#中面向對象的結構、結構化的錯誤處理、數組、命名空間和類來編寫存儲過程、函數和觸發器。此外,.netframework所提供的幾千個類和方法也擴展了服務器功能,使你能夠更容易的在服務器端使用。許多之前我們用t-sql難以實現的任務現在可以更容易的用托管代碼實現。同時,系統還新增了兩個數據庫對象類型:聚合和用戶自定義類型。你現在能夠更好的利用已掌握的知識和技能編寫in-process 代碼。總之,sql server2005 beta2 能夠使你的數據庫服務器更方便地在后臺執行適當的計算和操作。
sql server 和 clr 的集成主要提供了如下好處:
1.增強的編程模型:.netframework 兼容的編程語言在很多方面要比t-sql更強大,它提供給sql 開發人員之前沒有的架構和功能。
2.增強的安全性: 在clr環境下運行的托管代碼被數據庫引擎所控制,這使得.netframework 數據庫對象能夠比以前版本的sql server中的擴展存儲過程運行的更安全,并具備更好的安全性。
|||3.用戶自定義類型和聚合: 借助宿主clr,這兩個新的數據庫對象擴展了sql server 的存儲和查詢能力。
4.通用開發環境: 數據庫開發被集成到microsoft visual studio2005 開發環境中。 用來開發中間層和客戶層.netframework組件和服務的工具同樣可以被用來開發和調試數據庫對象和腳本。
5.性能和可伸縮性: 因為托管代碼被編譯為本機代碼得以優先執行,在某些場合性能可以得到顯著的提升。
6.利用clr集成,你可以用visual basic.net 和 c#這樣的語言寫出具有更復雜邏輯的代碼和更適用于計算型任務的代碼。而且,visual basic.net 和 c# 還提供了諸如封裝、繼承、多態這樣的面向對象的功能。你現在可以更容易的把代碼和類、命名空間組織在一起,這意味著你更容易組織和維護在工作中產生的大量代碼。這種從邏輯上和物理上把代碼組織到程序集和命名空間中的功能非常有用,它將使你能夠更好的在一個大型數據庫實現項目中發現和關聯不同的代碼塊。
托管代碼在處理運算和管理復雜執行邏輯上比t-sql更有效,并且提供了對字符串處理、正則表達式之類功能的額外支持。此外,由于現在可以利用.net framework類庫的功能,你可以更容易的從存儲過程、觸發器、用戶定義函數中訪問幾千個內置的類和例程(routines)。通過托管存儲過程、函數、觸發器、聚合,可以更容易的實現字符串處理、數學函數、日期操作、系統自由訪問、高級加密算法、文件訪問、圖像處理、xml數據操作等功能。
托管代碼的一個主要好處就是類型安全。在托管代碼執行前,clr將執行一些檢查,通過一個被稱之為“驗證”的處理過程來保證所執行的代碼是安全的。例如,會檢查代碼以確保不會讀未寫的內存地址。
|||在transact-sql 和 托管代碼之間的選擇
當編寫存儲過程、觸發器、用戶自定義函數時,你現在要決定是使用傳統的transact-sql 還是.netframework兼容的編程語言,如visual basic.net or c#來編寫它們。這個問題的答案依賴于使用的場合,在某些情形下,你會使用transact-sql,而另外一些情形下,你將使用托管代碼。
transact-sql 更適合代碼主要是進行數據訪問、沒有邏輯或邏輯簡單的場合。托管代碼更適合密集計算和復雜邏輯的場合,或者是那些你想利用.net framework 類庫的場合。
代碼放置也很重要。你可以把transact-sql 和 托管代碼都放在服務器上運行,代碼和數據的緊密結合使你能夠充分利用服務器的處理能力。而且因為它減少了數據層和中間層之間的流量,所以這非常有益。特別是對i/o密集的系統,可能會有顯著的好處。clr 函數也可以利用到sql server 查詢處理器的并行和優化功能。另一方面,你可能不希望把密集計算的任務放在數據庫服務器上,現在的大多數客戶端計算機都很強大,你可能希望把盡可能多的代碼放到客戶端來利用其處理能力。這沒有一成不變的答案。
web services
在sql server2005中,你可以開發數據庫層的xml web services,把sql server 作為一個http listener。這對那些以web services為中心的應用程序提供了新型的數據訪問功能。在sql server2005 beta2中,你可以使用http直接訪問sql server,無需使用iis這樣的中間層listener。sql server 開放了一個 web service 接口, 可以執行sql語句和調用函數和過程,查詢結果可用xml格式返回,并且可以利用visual studio 的web services 架構。
ado.net
很多新的功能出現在下一個版本的ado.net中。從查詢改變通知到多活動結果集(mars),ado.net使數據訪問和操作更加可伸縮和靈活。
|||最大的網站源碼資源下載站,
ado.net 通知支持
sql server2005 beta2 引入了對sql server 查詢的通知支持。你可以使用這一功能來發送一個命令到sql server,并且要求當其后運行的同樣命令產生不同的結果時,sql server生成一個通知。這一功能是通過從屬對象檢測到基礎數據的改變來實現的。可用通過多種客戶端api將命令發送到服務器,如:ado.net, ole db, open database connectivity (odbc), microsoft activex data objects (ado), 或 soap等,這些命令可能包含一個通知請求的tag。對于被作為請求一部分的被執行的每一條語句,服務器都會為請求中的每一條語句創建一個“通知訂閱”。通知通過一個sql service broker 隊列傳遞,應用程序可以輪詢,并且無論通知是否可用,都可以使用活動服務,或者阻礙語句的返回。 查詢通知對于在那些數據庫驅動web 站點應用程序中啟用結果緩存非常有用。
多活動結果集
多活動結果集 (mars)允許每個連接有超過1個的掛起請求,特別是允許每個連接有超過1個的打開的默認結果集。默認結果集是一種前向的、只讀的結果集,采用默認結果集,客戶端驅動可以透明的接受數據塊(表格數據流buffer大小的數據塊)以滿足應用程序的要求,而無需在服務器往返(就像使用服務器光標)。 應用程序不需要犧牲性能即可實現一種簡單的一次一行的編程方法。
多活動結果集消除了這一當前的限制:一個打開的默認結果集將阻止發送新的請求給服務器,直到整個結果集關閉為止。
快照隔離支持
sql server 2005 beta 2 引入了新的快照隔離級別。快照隔離是一種行級數據版本化機制,行數據版本被存儲以供讀取。這種新的隔離級別提供了以下優點:
1.對于只讀應用程序提高了數據的可用性,在oltp環境下,讀操作不會被阻塞。
|||最大的網站源碼資源下載站,
2.寫事務的自動強制沖突檢測。
3.簡化oracle到sql server的應用程序移植。
例如,當同時讀寫同樣數據時,鎖將造成程序堵塞。如果一個事務中改變了一行,另一個事務將不能讀這行,直到前一事務的改寫提交為止。有了快照隔離,讀依然可以訪問到改寫前的值。
快照隔離級別在以下技術中被支持: ado, ole db, sqloledb, shape provider, sqlodbc, ole db managed provider, sql managed provider。
sql 管理對象
sql管理對象 (smo)模型是sql server 2005的管理對象模型。smo 在sql server管理對象模型上有顯著的設計和結構上的提升。它是一個簡單易用的,有著豐富的基于.net framework托管代碼的對象模型。smo 是開發數據庫管理應用程序的主要的工具。sql server 管理工具集的每一個功能都可以用smo來實現。
新的smo對象模型和microsoft windows management instrumentation (wmi) apis 替代了sql-dmo,smo比sql-dmo更易使用。你依然可以使用sql server 2005 beta 2中的sql-dmo,但sql-dmo 并不包含sql server 2005的特有的管理特性。
smo 和 sql-dmo
smo 對象模型是sql-dmo 的延續。smo和sql-dmo 在特性上是兼容的,包含很多相同的對象。where possible, the original sql-dmo design is followed, 但是smo 有很多sql-dmo 沒有的附加特性。為了實現sql server 2005中更多的ddl和管理功能,smo增加了150多個新類。
smo的主要優點是性能和可伸縮性。smo有緩存對象模型,它允許在對sql server應用改變之前改變對象的一些屬性。因此,smo會更少的和服務器往返通訊,而且使得對象更加靈活。smo也有優化過的實例,這意味著你可以部分或全部的實例化一個對象,這樣你就不用實例化對象的所有屬性,從而可以快速的裝載多個對象。
|||,歡迎訪問網頁設計愛好者web開發。和sql-dmo只有一個單一的應用程序根目錄來保持對所有創建的服務器對象的引用不同的是,smo允許為多個服務器建立多個根,而無需建立一個新的連接。smo除了支持sql-dmo類型的腳本外,還支持先進的多段腳本。你也可以把一個對象轉入捕獲模式來捕獲所有施加在這個對象上的ddl,無需對服務器做實際的改變。
為了支持"wmi監控"和"通過smo對象接口的服務端配置",sql-dmo也有一個可控制的計算機對象,這個對象能夠簡化到wmi的接口。
xml 技術
xml已經成為一種存儲和交換數據的通用格式,是那些帶標記的、結構化或半結構化信息的常用選擇,如:文本(帶有標示文檔結構和重點的標記),嵌套對象(結構化的),異類數據(半結構化的)。xml也是一種用來在網絡上不同應用程序間散布數據的重要的、被廣為接受的標準。
microsoft sql server2000 支持通過microsoft sqlxml來使用xml, 它允許你把關系型數據轉換為xml,把xml數據存在關系型表中。microsoft sql server 2005 beta 2通過把xml作為一類數據類型來實現這一功能,此外,它還提供了針對xml文檔的新的查詢語句和定位修改。
為了更好的滿足用戶使用xml數據的要求,microsoft sql server 2005 beta 2引入了一種新的xml數據類型。這種數據類型有多種方法—query(), exist(), value(), nodes()和 modify(),它們實現了xml查詢 (xquery)規范中最重要的子集部分。事實上,sql server 2005 beta 2已經擴充了這一規范的xml數據修改部分。為了支持xml類型,增加了相應的關鍵字用于注冊和管理xml schema。for xml 和openxml也有所改變,它們在sql server 2000中被引入用來在關系型數據和xml之間互相轉換,在sql server 2005 beta 2中對此有所增強以更好的支持xml數據類型。
|||國內最大的酷站演示中心!xml 數據類型
xml能夠比sql server所支持的那些標量數據類型更好的對復雜數據進行建模。例如那些基于字符串的內置數據類型char 或者是varchar并不能夠充分有效的利用xml數據的大量優點。舉例來說,如果xml被存儲為一個字符串,那么你可以插入或檢索整個xml文檔,甚至能夠從中檢索連續的字符,但你不能定位查詢文檔中內容。通過xml數據類型,sql server 2005使我們能夠查詢xml文檔中的一部分,校驗文檔是否滿足xml schema,甚至能夠定位修改文檔中的內容。 它也將傳統的關系型數據和非結構化和半結構化的數據集成在一起,而這在sql server 2000中是不可能的。在sql server 2005中, xml數據被作為二進制大對象 (blobs)內部存放,使得重解析和壓縮更有效。
一個xml schema集可以和類型化xml的一列相關聯,這樣便能夠對已存儲的xml數據的約束、插入、改寫、值的類型進行校驗,也能夠優化存儲和查詢性能。sql server 2005 也提供了一些ddl 語句用于管理服務器上的schema。
讀寫 xml
sql server 2005 beta 2 也對在sql server 2000中引入的for xml 和 openxml 功能作了增強。
for xml
sql server 2000 中的for xml 字句并不支持在服務器上處理xml結果,你不能把xml結果存在表中,或分配給一個變量。sql server2005 beta2 通過支持xml數據類型和在服務器端處理xml增強了for xml功能,實現這一點是通過在for xml中增加type 指示。例如,select...for xml type 語句所生成的xml數據類型的結果集可被分配給一個本地的xml變量,也可被用在insert 語句中用來插入xml數據類型列。 path 樣式指定了列的值如何表現在xml數的路徑中。包含在for xml中的type和path選項簡化了復雜xml的生成,比for xml explicit查詢更易使用。
|||中國最大的web開發資源網站及技術社區,openxml
sql server 2000 基本上把for xml 子句和openxml 行集函數配對使用。也就是說,可以用for xml把關系型數據檢索為xml,用openxml可以把xml轉為關系型數據,從而設置sql連接和執行查詢。sql server 2005 beta 2 增強了openxml的功能。處理xml數據類型外,還支持幾種新的數據類型,如用戶定義類型(udts)。你可以在openxml with子句中使用它,你也可以傳遞一個xml數據類型實例給sp_preparedocument。
xquery 支持
xml 查詢語言,或者xquery是一種專為查詢各種類型xml數據的智能和高效的語言。使用xquery,你可以對xml數據類型列和變量進行查詢。. 和許多xml 標準一樣, world wide web consortium (w3c) 組織監督著xquery的開發。 xquery由 quilt 這種查詢語言發展而來,它基于多種查詢語言,如, xml path language (xpath) 1.0, xql, 和 sql, 它也把xpath 2.0 包含為一個子集。因此,如果你有使用xpath 1.0的經歷,你可以不用從頭學起。然而,它比xpath1.0有些顯著的增強,如:類型化,特別的函數,支持更好的反復,結果集排序,結構等。
sql server 2005 beta 2 提供了更多的xquery 功能,它允許在數據層操作xml對象。它支持xquery1.0 working draft of november 15, 2003的一個靜態類型子集。
dml 擴展
當前的 xquery 規范包括查詢的語法和語義詞,但沒有xml文檔修改的部分。xml數據修改語言(dml)是xquery數據修改特性的擴展, sql server2005 beta2 增加了3個關鍵字: insert, update和 delete,他們都被用在xml數據類型的modify() 方法中。
新的應用程序框架
sql server 2005引入了新的sql server應用程序框:service broker。 service broker 是一個分布式應用程序框架,它在數據庫到數據庫級上提供了可靠的異步通訊。
|||商業源碼熱門下載www.html.org.cn
sql service broker
在過去10年來,電子商務應用的發展提出了在數據庫應用程序間管理工作流的需求。當一個在線客戶發出一個購書訂單,這個訂單需要提交在庫存、送貨、信用卡系統中提交事務,也需要使用另一個web應用程序發出訂單確認信息。等待這些應用依次完成并不是好的方法,sql server 2005 提供了一個新的可伸縮的架構用來構建異步信息處理。
service broker 技術通過使用t-sql dml語言擴展允許內部或外部應用程序發送和接收可靠、異步的信息流。信息可以被發送到發送者所在數據庫的隊列中,獲發送到同一sql server實例的另一個數據庫,或發送到同一服務器或不同服務器的另一個實例。
reporting services
隨著sql server 2005的發布, 微軟在它集成商業智能平臺上擴展了一個主要的組件。sql server reporting services 可以在任何商業環境中,非常容易的把正確的數據傳遞給正確的人,從而擴展了微軟商業智能的前景。
reporting services 是一個創建、管理和發布傳統和交互式報表的完全基于服務器的平臺。它包括你創建、分發和管理報表所需的所有功能。與此同時,它的模塊化設計和可擴展的應用程序編程接口(apis)使軟件開發者、數據提供者和企業能夠把報表集成在現有系統和第三方應用程序中。
sql server 2005中的reporting services包括:
1.一個完整的用來創建、管理和查看報表的工具。
2.一個用來存儲和處理報表的引擎。
3.一個可擴展架構和開放接口,可在不同it環境中嵌入報表和集成解決方案。
通知服務
microsoft sql server 通知服務是一個用來開發和部署消息通知應用程序的平臺。通知是個性化、時效性的信息,可以被發送給多種不同的設備。
|||通知反映了訂閱者的喜好,訂閱者可以進入他感興趣的訂閱。如,“當adventure works股票價格達到$70.00時通知我”,或“當我這個團隊的策略文檔被更新時通知我”。
一旦觸發事件發生,通知便被生成并發送給用戶,通知也可根據用戶預定義的調度來生成和發送。用戶的訂閱規定了何時通知被生成和發送。
通知可以被分送給不同的設備,如,一個通知可以被發送給用戶的移動電話,個人數字助手(pda),microsoft windows messenger, 或 e-mail 賬戶。因為用戶常使用這些設備,所以通知是理想的發送高優先級信息的手段。
sql server mobile edition
在sql server 2000 中出現的 sqlserver2000 windowsce 版現已是sqlserver mobile 3.0版。在其中有很多和開發人員有關的新的關鍵特性:
1.你現在可以直接用sql server management studio 在桌面或設備上創建一個sql server mobile 版數據庫。你也可以直接從sql server management studio中操作這個數據庫的模式,而無需考慮這個數據庫是在桌面還是在移動設備上。你可以使用sql server management studio來對設備或桌面上的sql server mobile 版數據庫允許查詢。你可以充分利用新的sql server mobile 版的特性:一個gui界面的xml showplan,就像本機sql server一樣,可以使用查詢暗示來覆蓋sql server mobile的查詢優化器。這是第一次可以在設備上控制優化計劃。
2.你現在可以對dts對象編碼來交換數據。
3.在sql server 2005中從sqlresult 集派生出新的sqlceresult 集。這將使得sql server mobile版有個真正可滾動的、可更新的光標。它也允許綁定到設備上的數據對象。
4.你可以在主應用程序打開的同時編寫一個應用程序來同步數據,你現在可以在同一時刻用兩個不同的應用程序來訪問設備上的同一個數據庫。
新聞熱點
疑難解答