一、簡介
Microsoft SQL Server 2005 中的重大更改之一是包含了 XML 資料類型。此資料類型是第一類類型,就像 INT 或 VARCHAR 一樣,而且 SQL Server 2005 允許使用一系列 XML 特定的函數對此資料類型進行就地查詢和處理。它還支援儲存資料庫中的 XML 結構描述的集合,從而啟用基於資料庫的結構描述驗證。另外,SQL Server 2005 大大地擴充了 XML 組合(SELECT ... FOR XML 語句)的功能,擴充了 OpenXML() XML 分解函數,並針對 XML 資料類型提供了一個新的 nodes() 函數以進行更輕量級的分解。
既然對資料庫伺服器增強了此新的 XML 功能,那麼對 Microsoft ADO.NET 2.0 中的 SqlClient 資料提供者也進行增強就不會令人感到驚奇了。對 ADO.NET DataSet 也有更改,以便支援類型 XML 的 DataColumn,而且 System.Data 和 System.Xml 之間的“整合點”得到了拓寬。在本文中,我將探究在用戶端上使用 SQL Server 2005 XML 資料類型。
SQL Server 2005 可以產生兩類 XML 輸出。語句 SELECT * FROM AUTHORS FOR XML AUTO 產生 XML 流,而不是一列一行的行集。該輸出類型與 SQL Server 2000 中的輸出類型相比沒有改變。只是因為查詢分析器工具中的限制,XML 流輸出在 SQL Server 查詢分析器中才顯示為一列一行的行集。您可以通過其特定的唯一識別碼名稱“XML_F52E2B61-18A1-11d1-B105-000805F49916B”來將這種流與“普通”列區分開來。此名稱實際上是底層 TDS(這是一種表格式的資料流,SQL Server 網路格式)分析器的指標,在這種分析器中,列應該流至用戶端,而不是像普通行集那樣發送。有一種特殊的方法 SqlCommand.ExecuteXmlReader 用來在用戶端上檢索此特殊的流。在 SQL Server 2005 中,SELECT ... FOR XML 語句通過許多方式得到了增強。這裡僅提少數幾種: