SQLServer2005數據庫開發概述
隨著Microsoft SQL Server 2005 Beta 2的發布,數據庫開發的方式正在改變中。作為一個數據庫開發人員,現在你可以更好的把工作關注在功能、對本機格式的數據的訪問(如XML)、以及利用強大的數據庫服務器創建更復雜的系統上。數據庫開發工作正前所未有的越來越集成,你所需要的所有工具都觸手可及。
.NET Framework集成
隨著Microsoft SQL Server 2005 Beta 2的發布,數據庫編程人員現在可以充分利用Microsoft .NET Framework 類庫和現代編程語言來開發數據庫應用。 通過集成的CLR,你可以用.NET Framework language 里的Visual Basic .NET 和C#中面向對象的結構、結構化的錯誤處理、數組、命名空間和類來編寫存儲過程、函數和觸發器。此外,.NET Framework所提供的幾千個類和方法也擴展了服務器功能,使你能夠更容易的在服務器端使用。許多之前我們用T-SQL難以實現的任務現在可以更容易的用托管代碼實現。同時,系統還新增了兩個數據庫對象類型:聚合和用戶自定義類型。你現在能夠更好的利用已掌握的知識和技能編寫in-process 代碼。總之,SQL Server 2005 Beta 2 能夠使你的數據庫服務器更方便地在后臺執行適當的計算和操作。
SQL Server 和 CLR 的集成主要提供了如下好處:
1.增強的編程模型:.NET Framework 兼容的編程語言在很多方面要比T-SQL更強大,它提供給SQL 開發人員之前沒有的架構和功能。
2.增強的安全性: 在CLR環境下運行的托管代碼被數據庫引擎所控制,這使得.NET Framework 數據庫對象能夠比以前版本的SQL Server中的擴展存儲過程運行的更安全,并具備更好的安全性。
3.用戶自定義類型和聚合: 借助宿主CLR,這兩個新的數據庫對象擴展了SQL Server 的存儲和查詢能力。
4.通用開發環境: 數據庫開發被集成到Microsoft Visual Studio 2005 開發環境中。 用來開發中間層和客戶層.NET Framework組件和服務的工具同樣可以被用來開發和調試數據庫對象和腳本。
5.性能和可伸縮性: 因為托管代碼被編譯為本機代碼得以優先執行,在某些場合性能可以得到顯著的提升。
6.利用CLR集成,你可以用Visual Basic .NET 和 C#這樣的語言寫出具有更復雜邏輯的代碼和更適用于計算型任務的代碼。而且,Visual Basic .NET 和 C# 還提供了諸如封裝、繼承、多態這樣的面向對象的功能。你現在可以更容易的把代碼和類、命名空間組織在一起,這意味著你更容易組織和維護在工作中產生的大量代碼。這種從邏輯上和物理上把代碼組織到程序集和命名空間中的功能非常有用,它將使你能夠更好的在一個大型數據庫實現項目中發現和關聯不同的代碼塊。
托管代碼在處理運算和管理復雜執行邏輯上比T-SQL更有效,并且提供了對字符串處理、正則表達式之類功能的額外支持。此外,由于現在可以利用.NET Framework類庫的功能,你可以更容易的從存儲過程、觸發器、用戶定義函數中訪問幾千個內置的類和例程(routines)。通過托管存儲過程、函數、觸發器、聚合,可以更容易的實現字符串處理、數學函數、日期操作、系統自由訪問、高級加密算法、文件訪問、圖像處理、XML數據操作等功能。
托管代碼的一個主要好處就是類型安全。在托管代碼執行前,CLR將執行一些檢查,通過一個被稱之為“驗證”的處理過程來保證所執行的代碼是安全的。例如,會檢查代碼以確保不會讀未寫的內存地址。
在Transact-SQL 和 托管代碼之間的選擇
當編寫存儲過程、觸發器、用戶自定義函數時,你現在要決定是使用傳統的Transact-SQL 還是.NET Framework兼容的編程語言,如Visual Basic .NET or C#來編寫它們。這個問題的答案依賴于使用的場合,在某些情形下,你會使用Transact-SQL,而另外一些情形下,你將使用托管代碼。
Transact-SQL 更適合代碼主要是進行數據訪問、沒有邏輯或邏輯簡單的場合。托管代碼更適合密集計算和復雜邏輯的場合,或者是那些你想利用.NET Framework 類庫的場合。
代碼放置也很重要。你可以把Transact-SQL 和 托管代碼都放在服務器上運行,代碼和數據的緊密結合使你能夠充分利用服務器的處理能力。而且因為它減少了數據層和中間層之間的流量,所以這非常有益。特別是對I/O密集的系統,可能會有顯著的好處。CLR 函數也可以利用到SQL Server 查詢處理器的并行和優化功能。另一方面,你可能不希望把密集計算的任務放在數據庫服務器上,現在的大多數客戶端計算機都很強大,你可能希望把盡可能多的代碼放到客戶端來利用其處理能力。這沒有一成不變的答案。
Web Services
在SQL Server 2005中,你可以開發數據庫層的XML Web services,把SQL Server 作為一個HTTP listener。這對那些以Web services為中心的應用程序提供了新型的數據訪問功能。在SQL Server 2005 Beta 2中,你可以使用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 Server 2005 Beta 2 引入了對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也有優化過的實例,這意味著你可以部分或全部的實例化一個對象,這樣你就不用實例化對象的所有屬性,從而可以快速的裝載多個對象。
和SQL-DMO只有一個單一的應用程序根目錄來保持對所有創建的服務器對象的引用不同的是,SMO允許為多個服務器建立多個根,而無需建立一個新的連接。SMO除了支持SQL-DMO類型的腳本外,還支持先進的多段腳本。你也可以把一個對象轉入捕獲模式來捕獲所有施加在這個對象上的DDL,無需對服務器做實際的改變。
為了支持"WMI監控"和"通過SMO對象接口的服務端配置",SQL-DMO也有一個可控制的計算機對象,這個對象能夠簡化到WMI的接口。
XML 技術
XML已經成為一種存儲和交換數據的通用格式,是那些帶標記的、結構化或半結構化信息的常用選擇,如:文本(帶有標示文檔結構和重點的標記),嵌套對象(結構化的),異類數據(半結構化的)。XML也是一種用來在網絡上不同應用程序間散布數據的重要的、被廣為接受的標準。
Microsoft SQL Server 2000 支持通過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 Server 2005 Beta 2 通過支持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查詢更易使用。
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對象。它支持XQuery 1.0 Working Draft of November 15, 2003的一個靜態類型子集。
DML 擴展
當前的 XQuery 規范包括查詢的語法和語義詞,但沒有XML文檔修改的部分。XML數據修改語言(DML)是XQuery數據修改特性的擴展, SQL Server 2005 Beta 2 增加了3個關鍵字: insert, update和 delete,他們都被用在XML數據類型的modify() 方法中。
新的應用程序框架
SQL Server 2005引入了新的SQL Server應用程序框:Service Broker。 Service Broker 是一個分布式應用程序框架,它在數據庫到數據庫級上提供了可靠的異步通訊。
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 中出現的 SQL Server 2000 Windows CE 版現已是SQL Server 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.你可以在主應用程序打開的同時編寫一個應用程序來同步數據,你現在可以在同一時刻用兩個不同的應用程序來訪問設備上的同一個數據庫。
5.你可以對同步狀態欄進行編程以得到同步狀態通知,以前沒有辦法做到這一點,無法通知用戶設備并沒有停止響應。
6.你可以通過更為主動的頁回收策略來維護一個更小的數據庫。
7.你可以使用SQL Server語法來共享參數查詢代碼。
語言增強
Transact-SQL 增強
Transact-SQL 一直以來就是SQL Server所有編程的基礎。SQL Server 2005 Beta 2 提供了很多新的語言功能用以開發可伸縮的應用程序。這些增強包括錯誤處理、新的遞歸查詢功能、對新的SQL Server數據庫引擎功能的支持等。SQL Server 2005 Beta 2 中的 Transact-SQL 增強功能提高了您在編寫查詢時的表達能力,使您可以改善代碼的性能,并且擴充了您的錯誤管理能力。Microsoft 在增強 Transact-SQL 方面不斷付出的努力顯示了T-SQL在 SQL Server 中具有的重要作用、T-SQL的威力以及對它的將來所懷有的堅定信念。
遞歸查詢和通用表表達式
通用表表達式 (CTE) 是一個可以由定義語句引用的臨時命名的結果集。在它們的簡單形式中,您可以將 CTE 視為更類似于非持續性類型視圖的派生表的改進版本。在查詢的 FROM 子句中引用 CTE 的方式類似于引用派生表和視圖的方式。只須定義 CTE 一次,即可在查詢中多次引用它。在 CTE 的定義中,可以引用在同一批處理中定義的變量。您甚至可以在 INSERT、UPDATE、DELETE 和 CREATE VIEW 語句中以與使用視圖類似的方式使用 CTE。但是,CTE 的真正威力在于它們的遞歸功能,即 CTE 可以包含對它們自身的引用。當您希望像引用表一樣引用查詢結果,但是不希望在數據庫中創建持久性視圖時,可以使用派生表。但是,派生表具有 CTE 中所不具有的限制:您無法只在查詢中定義派生表一次然后多次使用它。相反,您必須在同一查詢中定義多個派生表。但是,您可以定義 CTE 一次并在查詢中多次使用它,而無須在數據庫中持續保存它。
非遞歸 CTE 可以改善語句的表達能力。但是對于每一段使用非遞歸 CTE 的代碼,您通常可以通過使用其他 Transact-SQL 結構(例如,派生表)來實現同一功能,只不過代碼更長點。對于遞歸 CTE,情況則迥然不同。當 CTE 引用它本身時,它被視為遞歸的。遞歸的 CTE 是根據至少兩個查詢(或者,用遞歸查詢的說法,為成員)構建的。一個是非遞歸查詢,也稱為錨定成員 (AM)。另一個是遞歸查詢,也稱為遞歸成員 (RM)。查詢由 UNION ALL 運算符連接為一個單獨的CTE。
PIVOT 和 UNPIVOT 操作符
SQL Server 2005 Beta 2 提供了兩個新的關系運算符: PIVOT 和 UNPIVOT, 你可以在查詢的FROM子句中使用它。它們對一個輸入表值表達式執行某種操作,并且產生一個輸出表作為結果。PIVOT 運算符將行旋轉為列,并且可能同時執行聚合。它基于給定的樞軸列擴大輸入表表達式,并生成一個帶有與樞軸列中的每個唯一值相對應的列的輸出表。
PIVOT 運算符可用來處理開放架構方案以及生成交叉分析報表。在開放架構方案中,您需要用事先不知道或因實體類型而異的屬性集來維護實體。應用程序的用戶動態定義這些屬性。您將屬性拆分到不同的行中,并且只為每個實體實例存儲相關的屬性,而不是在表中預定義很多列并存儲很多空值。PIVOT 使您可以為開放架構和其他需要將行旋轉為列的方案生成交叉分析報表,并且可能同時計算聚合并且以有用的形式呈現數據。
UNPIVOT 運算符執行與 PIVOT 運算符相反的操作;它將列旋轉為行。它基于旋轉列收縮輸入表表達式。UNPIVOT 運算符使您可以規格化預先旋轉的數據。
APPLY 操作符
通過 APPLY 運算符,SQL Server 2005 Beta 2 使您可以在相關子查詢中引用表值函數。APPLY 關系運算符使您可以針對外部表表達式的每個行調用指定的表值函數一次。您可以在查詢的 FROM 子句中指定 APPLY,其方式與使用 JOIN 關系運算符類似。APPLY 具有兩種形式:CROSS APPLY 和 OUTER APPLY。
CROSS APPLY 為外部表表達式中的每個行調用表值函數。您可以引用外部表中的列作為該表值函數的參數。CROSS APPLY 從該表值函數的單個調用所返回的所有結果中返回統一的結果集。如果該表值函數對于給定的外部行返回空集,則不會在結果中返回該外部行。
OUTER APPLY 非常類似于 CROSS APPLY,但是它還從表值函數為其返回空集的外部表中返回行。空值作為與表值函數的列相對應的列值返回。
事務異常處理
以前版本的 SQL Server 要求在每個懷疑可能出錯的語句之后包含錯誤處理代碼,就象Microsoft Visual Basic 6.0那樣。要將錯誤檢查代碼集中在一起,必須使用標簽和 GOTO 語句。此外,諸如數據類型轉換錯誤之類的錯誤會導致批處理終止;因此,無法用 Transact-SQL 捕獲這些錯誤。SQL Server 2005 Beta 2 引入了一種簡單而強大的異常處理機制:TRY...CATCH Transact-SQL 結構,就象Visual Basic .NET and C#中那樣。現在可以捕獲和處理過去會導致語句、級、批、或事務處理終止的錯誤,前提是這些錯誤不會導致連接中斷(通常是嚴重度為 21 及以上的錯誤,例如,表或數據庫完整性可疑、硬件錯誤等等)。
為了實現錯誤處理,只需要把想執行的代碼寫入BEGIN TRY/END TRY 塊中,接著把錯誤處理代碼寫入BEGIN CATCH /END CATCH 塊中。注意一個 TRY 塊必須要有一個對應的CATCH 塊,否則,將會出現語法錯誤。
DDL 事件通知
SQL Server 2005 Beta 2 使您可以捕獲 DDL 和系統事件,并且向 Service Broker 部署發送事件通知。和觸發器地同步處理相反的是,事件通知是一種允許異步使用的事件傳遞機制。事件通知將 XML 數據發送給指定的 Service Broker 服務,而事件使用者異步使用該數據。事件使用者可以在Service Broker接受語句中使用的WAITFOR 子句擴展來等待新數據的到達。
Full Text 搜索增強
SQL Server 2005 支持強大的full-text應用程序。編目能力得以加強以提供對目錄的更大的靈活性, 查詢性能和可伸縮性也有了巨大的提升,新的管理工具也為full-text 實施提供更強的功能。
安全增強
SQL Server 2005 受益于微軟公司提出的可信賴計算——微軟公司旨在提高客戶在安全性、私有性、可靠性和業務完整性領域體驗的計劃。作為微軟公司在2002年1月在全公司范圍內實施計劃的一部分,微軟隨后引入了新的開發流程,使得開發的產品無論是在設計、默認設置還是在部署方面,安全性都得到充分的保證。SQL Server開發團隊已經將這個新的流程帶入到SQL Server下一代版本——SQL Server 2005的開發過程中了, 這使得SQL Server 2005 將成為有史以來最具安全性的SQL Server。
大體上,這些新特性和改進可分為以下三個范圍:
1.控制用戶訪問。SQL Server 2005將提供對用戶訪問SQL Server更強大的控制能力,可以通過策略來限定用戶的訪問。
2.禁用服務和限制服務配置。管理員能夠把對SQL Server的訪問限定在管理員所指定的某個范圍內和某個粒度等級上,這樣,管理員就能輕松地管理著一個不違反權限最低原則的系統。由于在安裝時默認將禁用某些不是必需的服務,那么,管理員將更多考慮的是決定哪個服務根據需求被啟用而不是去找有哪些不必要的服務需要關閉。
3.減少新特性遭受攻擊的“表面積”。從安裝的那一刻開始,SQL Server 2005遭受攻擊的“表面積”就將被最小化,因為在SQL Server 2005的整個開發過程中,新特性的安全性已被反復地檢查和測試。
小結
Microsoft SQL Server 2005 為開發人員提供了構建新型數據庫應用程序的多種工具。通過移去代碼執行和存儲之間的屏障,以及集成XML,SQL Server 2005 為數據庫開發人員開啟了一個無限可能的世界。本文只是對SQL Server 2005開發方面的一個介紹。
(e129)