如果你在IT業工作,那麼你很可能聽說過XML;但如果你的工作主要與SQL Server有關,那麼你可能並沒有直接運用過XML。XML已經是Web編程環境中的普遍的資料格式了,而且它也是.NET Framework中主要的底層技術之一。SQL Server以兩種方式來支援XML:通過SQL Server本身的功能,以及通過發布稱為SQLXML的額外的功能。SQLXML擴充了SQL Server,並提供了XML相容性。在本月的專欄中,我將講述SQL Server對XML的內建的支援,並講述通過發布SQLXML而增加的一些功能(見 圖1)。SQL Server支援XML就意味著,我們可以更有效地更新和讀取資料了;我們不再需要將XML資料轉換成資料庫可以理解的另一種格式,或將XML資料從資料庫轉換成XML。而且,可供開發人員選擇的方法也更多了,就是說,他們在訪問資料方面更靈活了。
對XML的宣傳已經有很多了,所以重要的一點是要意識到它只是一門簡單的技術。本質上,它是用來描述資料的一個標準的檔案格式。(有關XML基礎知識的更多的資訊,請參閱工具條“XML 101”。)從發布SQL Server 2000的最初版本以來,對XML的支援就已經是SQL Server的一部分了。SQL Server不是通過提供一個方法儲存XML檔案來支援XML的,而是提供了一個到關係資料的介面,使你可以在表和其它資料庫物件中讀寫XML資料。SQL Server所固有的XML功能包括:可以通過HTTP、模板查詢、FOR XML子句和OPENXML()函數來訪問SQL Server。接下來,我將講述這些功能是如何運作的,以及它們可以如何使你的企業受益。
圖1. 提供 XML支援
要通過HTTP訪問一個SQL Server資料庫,你必須首先設定一個虛擬目錄。這個虛擬目錄在HTTP協議和一個特定的資料庫之間提供了一個連結。設定虛擬目錄時,我們需要用“Configure SQL XML Support In IIS”菜單條目,你可以在Window的Start菜單中的SQL Server菜單條目找到該項。通過該菜單條目,你就可以指定虛擬目錄的名稱、實體路徑、伺服器名稱、資料庫名稱和註冊資訊。一旦你建立了一個虛擬目錄,你就可以通過一個URL將查詢發送到資料庫了。如果你設定了一個叫做Northwind的虛擬目錄,並在瀏覽器中輸入了查詢/Northwind?sql=SELECT+*+FROM+Shippers+FOR+XML+AUTO,ELEMENTS+&root=Shippers,它就會返回類似於“XML 101”工具條中的Shippers例子中的XML資料。與運用ADO或其它任何技術相比,HTTP查詢會讓我們更容易地來訪問網站或Web應用程式的資料。 對於一個簡單的查詢語句來說,HTTP查詢會很好,但對於一個更複雜的查詢來說,這種格式就會變得難以理解並很難管理了。這種方法也不安全,因為查詢原始碼是暴露給使用者的。另外一種可選方法是在HTTP上調用一個模板查詢。一個模板查詢就是一個包含SQL查詢的XML檔案。模板作為檔案儲存在伺服器上。因此,如果你在一個叫做GetShippers.xml的模板中封裝了Shippers SELECT查詢,那麼URL查詢的形式就會是:/Northwind/templates/GetShippers.xml。模板也可以帶有參數,當你的模板調用一個預存程序時,該功能會很有用。在URL查詢和模板查詢中,如果你想從查詢返回一個HTML頁面,那麼你可以指定一個XSLT樣式表,將它用於XML。模板查詢是讀取資料的一個更安全的方法,它可以被緩衝以得到更好的效能。