首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005:XML、T-SQL 與 CLR 整合打造全新資料庫開發平台

     編輯:關於SqlServer

本文基於 Microsoft SQL Server 2005(代號「Yukon」)Beta 1 版本撰寫,所有資訊均可能隨正式版釋出而變更。文中所述功能旨在協助開發人員規劃與評估,不保證與最終產品完全一致。

section

Transact-SQL 增強功能

section

SQL Server Yukon .NET 程式設計

section

CLR 整合

利用 CLR 在 T-SQL 與托管代碼之間自由選擇

SQL Server 2005 寄宿 .NET Framework 通用語言執行平台(CLR),將資料庫擴展至程序性程式設計與托管代碼領域。開發人員可依據案例需求,選擇使用 XML、.NET Framework 或 T-SQL 完成資料存取與操作,實現對稱的程式設計模型。

使用者定義型別(UDT)、函數(UDF)與聚合(UDAgg)

  • UDT:可在伺服器端作為資料表定義一部分,在用戶端作為物件操作。支援地理空間、自訂金融、特殊日期時間等型別。UDT 為結構或參考型別,不支援繼承與多型,但可包含公用/私用函數。
  • UDF:分為標量值函數(回傳單一值)與資料表值函數(回傳結果集)。
  • UDAgg:允許以托管代碼建立自訂聚合函數,供 T-SQL 或其他托管代碼呼叫。例如計算加權平均、標準差等統計值。

托管預存程序

適合回傳簡單結果集或執行 DML/DDL 陳述式。註冊語法範例:

CREATE PROCEDURE mysproc (@username NVARCHAR(4000))
AS EXTERNAL NAME YukonCLR:[MyNamespace.CLRCode]::myfunction
section

XML 與 SQL Server Yukon

XML 資料類型

XML 從表示技術演進為線路格式,現成為原生儲存格式。XML 資料類型為功能完整的類型,具備關聯資料類型所有能力:可建立索引、透過 XSD 結構描述加入約束、使用內嵌 XQuery 查詢、支援 modify() 方法新增/刪除/更新節點。

  • 型別化 XML:關聯 XSD 結構描述,查詢效能較佳。
  • 非型別化 XML:無 XSD 關聯,彈性較大。
  • 同一欄位可同時儲存 XML 文件與 XML 片段。
  • 需建立專用「XML 索引」以標記標籤、值與路徑。

XSD 與 XML 資料類型

建立 XML 欄位時可關聯 XSD 文件,透過 DDL 語法:

CREATE TABLE T (pk INT, xCol XML('mySchema'))

結構描述匯入後會被剖析為元素(ELEMENT、ATTRIBUTE、TYPE 等)儲存於系統資料表,不保留原始結構描述文件,建議另行備份。可使用 XML_SCHEMA_NAMESPACE('uri') 擷取結構描述內容。

XML 查詢(XQuery)

XQuery 為針對所有類型 XML 資料優化的查詢語言,支援型別關聯方法對變數與欄位查詢,可在同一批次中跨關聯與 XML 資料查詢。SQL Server 2005 支援 XQuery 1.0 工作草案(2001/12/20 ~ 2002/11/15)的靜態型別化子集。XQuery 由前導(命名空間宣告、結構描述匯入)與主體(運算式序列)組成,透過 query()、value()、exist()、modify() 方法執行。

Microsoft XQuery Designer

整合於 SQL Server Workbench 的視覺化工具,協助開發人員無需深究 XQuery 語法即可編寫查詢、操作與擷取 XML 資料。

section

認識 SQL Server 服務代理

服務代理提供可靠的非同步訊息傳遞架構,支援資料庫內部或跨執行個體的訊息路由。核心優勢:

  • 自動處理訊息排序、唯一傳遞與工作階段識別。
  • 訊息排隊機制確保目標服務暫時不可用時仍能可靠傳遞。
  • 鬆耦合設計:啟動方發送訊息後可繼續處理,不阻塞等待。
  • 啟動功能:依訊息到達率自動調整服務程序實例數量,系統重啟自動恢復處理。
  • 平行處理同一佇列訊息時,自動鎖定相關工作階段訊息,避免競爭條件。

資料庫整合優勢

  • 交易性訊息處理:接收、處理、回覆封裝於單一資料庫交易,失敗自動回滾並重新排隊。
  • 單一管理點:資料、訊息、應用程式邏輯共存同一資料庫,簡化備份、災難復原、叢集、安全性維護。
  • 共用開發環境:T-SCL 或 CLR 語言均可撰寫服務代理預存程序。
  • 自動資源管理:代理於 SQL Server 執行個體內運作,平衡跨資料庫資源使用。
section

SQL Server Yukon 可程式設計場景:訂單輸入應用程式範例

結合 XML、CLR、服務代理與 T-SQL 增強功能,構建可靠、可擴充的完整資料庫應用:

  1. 使用者於 Web 站點下單,訂單資訊以 XML 欄位形式送入訂單輸入服務佇列。
  2. 訂單輸入服務啟動交易,處理訂單並向信用額度服務驗證。
  3. 通過 XQuery 檢查庫存,可出貨則送入出貨服務佇列。
  4. 出貨服務(T-SQL 預存程序)解析 XML 產生出貨單,完成後通知應收帳款服務。
  5. 所有訊息寫入稽核資料表供後續分析。

小結

SQL Server 2005 引入 CLR 整合、原生 XML 支援、XQuery、服務代理與 T-SQL 增強,共同創造前所未有的資料庫程式設計能力。開發人員擁有多元資料存取與操作路徑,能建構更可擴充、可靠、健壯的應用程式,並大幅提升開發效率。立即體驗 Yukon Beta 版,持續關注 MSDN Magazine 後續報導。

作者:Eric Brown,Microsoft SQL Server 團隊成員,具備豐富資料庫開發經驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved