首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 HTTP 端點與 XML 查詢存取架構完整指南

     編輯:關於SqlServer

SQL Server 2000 原生 HTTP/XML 存取架構 (SQLXML / ISAPI)

透過 IIS 虛擬目錄管理工具設定虛擬根,即可透過 HTTP URL 直接查詢 SQL Server,回傳 XML 結果。

核心 URL 查詢模式

模式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 路徑段落的解析方式。

XML 結果格式控制

  • 完整 XML 文件:含單一根元素。使用 root=RootName 參數或範本中 <ROOT> 標籤。回傳含 Byte Order Mark (BOM)。
  • XML 文件片段:無根元素、無 BOM。直接 URL 查詢無 root 參數時產生。適合片段拼接。

資源管理警示

URL 查詢若建立暫存表、暫存程序、游標、呼叫 sp_xml_preparedocument,必須在同一批次/範本中配對釋放 (DROP TABLE, DEALLOCATE, sp_xml_removedocument),否則洩漏記憶體/鎖資源。

部署工具:IIS 虛擬目錄管理工具

  1. 開始 → 程式集 → SQL Server 工具 → 在 IIS 中設定 SQL XML 支援。
  2. 新增虛擬目錄 → 指定 IIS 網站、虛擬目錄名稱、驗證方式 (Basic/Integrated/Digest)、SQL Server 登入資訊、資料庫名稱。
  3. 設定虛擬名稱 (template/schema/dbobject) 指向實體檔案路徑。
  4. 啟用/停用:SQL 查詢、範本、XPath、資料庫物件存取權限。
生命週期提醒:SQL Server 2000 已結束支援 (2013/07/09)。SQLXML 4.0 (SP1) 為最終版本。現代架構請改用 ASP.NET Core / Web API + Entity Framework / Dapper 暴露 RESTful 端點,支援 JSON/XML、OAuth2、Swagger、HTTPS、速率限制等企業級特性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved