SQL Server 2000 引入 XML 支援,透過 IIS 虛擬目錄將資料庫公開為 HTTP 端點,支援直接執行 SQL、XPath 查詢與範本檔案。本文說明完整設定流程與安全性注意事項。
xml)、實體路徑(如 C:\Inetpub\Wwwroot\xml)。(local) 或具名實例)、預設資料庫。template 類型虛擬目錄指向儲存 .xml 範本檔的資料夾。瀏覽器輸入:
https:///xml?sql=SELECT+*+FROM+Sysobjects+WHERE+xtype='u'+FOR+XML+AUTO&root=root
應回傳所有使用者資料表的 XML 文件。
| 模式 | 說明 | 範例 |
|---|---|---|
| URL 查詢 | 直接在查詢字串傳遞 SQL | ?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO |
| 範本查詢 | 預先寫好 .xml 範本檔,含參數佔位符 | ?template=GetCust.xml&CustomerID=ALFKI |
| XPath 查詢 | 對對應結構描述(XDR/XSD)執行 XPath | ?xpath=/Customers[@CustomerID='ALFKI'] |
SQL Server 要求 XML 文件單一根元素,兩種加入方式:
SELECT "<ROOT>"、SELECT "</ROOT>"&root=root(推薦,較乾淨)SELECT、EXECUTE 特定預存程序權限,移除 INSERT/UPDATE/DELETE/DROP/CREATE PROC。xp_cmdshell、sp_configure 等)。<%@ Language=VBScript %>
<!-- #include file="ADOVBS.inc" -->
<%
Dim objConn, objCmd
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=SQLOLEDB.1;Data Source=(local);Initial Catalog=TestDB;User Id=xml_user;Password=***;"
Set objCmd = Server.CreateObject("ADODB.Command")
objCmd.ActiveConnection = objConn
objCmd.Properties("Output Stream") = Response
objCmd.Properties("XML Root") = "root"
objCmd.CommandText = "SELECT * FROM Products FOR XML AUTO"
Response.ContentType = "text/xml"
objCmd.Execute , , adExecuteStream
%>