對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的虛擬目錄,並在浏覽器中輸入了查詢http://localhost/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查詢的形式就會是:http://localhost/Northwind/templates/GetShippers.XML。模板也可以帶有參數,當你的模板調用一個存儲過程時,該功能會很有用。