透過 IIS 虛擬目錄管理工具設定虛擬根,即可透過 HTTP URL 直接查詢 SQL Server,回傳 XML 結果。
| 模式 | URL 範例 | 說明 |
|---|---|---|
| 直接 SQL 查詢 | https://IISServer/vroot?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&root=root |
URL 內嵌 SQL,生產環境禁用 (注入風險)。需 FOR XML 子句。root 參數指定根元素。 |
| 範本查詢 | https://IISServer/vroot?template=<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"><sql:query>SELECT * FROM Customers FOR XML AUTO</sql:query></ROOT> |
URL 內嵌 XML 範本。可組合多查詢、XPath、參數化,安全性優於直接 SQL。 |
| 範本檔案 | https://IISServer/vroot/TemplateVirtualName/QueryTemplate.xml |
將範本儲存為 .xml 檔,URL 引用虛擬名稱。隱藏 SQL 邏輯、支援長查詢、增強安全性 (可移除 URL 查詢權限僅保留檔案存取)。 |
| XPath 查詢 (對應註釋結構描述) | https://IISServer/vroot/SchemaVirtualName/Schema.xml/Customer[@CustomerID='ALFKI'] |
對 XDR 結構描述 (Mapping Schema) 執行 XPath。概念類似 View + SQL 查詢,但以 XML 導向。 |
| 資料庫物件直接存取 | https://IISServer/vroot/DBObjectVirtualName/TableName/XPathQuery |
直接對資料表/檢視表執行 XPath。虛擬名稱類型為 dbobject。 |
template:對應範本檔案目錄 (儲存 .xml 範本)。schema:對應結構描述檔案目錄 (儲存 .xdr/.xsd 映射結構描述)。dbobject:對應資料庫物件 (資料表/檢視表) 直接存取。虛擬名稱定義於 IIS 虛擬目錄管理工具中,決定 URL 路徑段落的解析方式。
root=RootName 參數或範本中 <ROOT> 標籤。回傳含 Byte Order Mark (BOM)。root 參數時產生。適合片段拼接。URL 查詢若建立暫存表、暫存程序、游標、呼叫 sp_xml_preparedocument,必須在同一批次/範本中配對釋放 (DROP TABLE, DEALLOCATE, sp_xml_removedocument),否則洩漏記憶體/鎖資源。