sql_server_using_url>使用 HTTP 訪問 SQL Server
可以使用 HTTP 訪問 Microsoft® SQL Server™ 2000。在可以使用 HTTP 指定查詢前,必須先用用於 SQL Server 的 IIS 虛擬目錄管理實用工具創建一個虛擬根。
SQL Server 的 HTTP 訪問能力使您得以:
直接在 URL 中指定 SQL 查詢,例如: target=_blank>http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&root=root
指定 FOR XML 子句以 XML 文檔而不是標准行集的形式返回結果。根參數可標識單一的頂層元素。
直接在 URL 中指定模板。
模板是包含一個或多個 SQL 語句的有效的 XML 文檔。模板使您得以將數據放在一起以形成有效的 XML 文檔,但直接在 URL 中指定查詢時不一定是這樣。例如: target=_blank>http://IISServer/nwind?template=SELECT+*+FROM+Customers+FOR+XML+AUTO
在 URL 中指定模板文件。
在 URL 中寫入長 SQL 查詢會很麻煩。此外,浏覽器對在 URL 中可以輸入的文本量可能有限制。若要避免這些問題,可以編寫模板並將其存儲在文件中。模板是包含一個或多個 SQL 語句和 XPath 查詢的有效的 XML 文檔。可以在 URL 中直接指定模板文件,例如:http://IISServer/nwind/TemplateVirtualName/templatefile.xml
target=_blank>http://IISServer/nwind/TemplateVirtualName/templatefile.xml">http://IISServer/nwind/TemplateVirtualName/templatefile.xml
在 URL 中,TemplateVirtualName 是使用用於 SQL Server 的 IIS 虛擬目錄管理實用工具創建的 template 類型的虛擬名稱。
模板文件還刪除來自用戶的數據庫查詢的詳細信息以增強安全性。通過將模板文件存儲在注冊數據庫時所在的虛擬根目錄(或其子目錄)中,刪除虛擬根上的 URL 查詢處理服務並只允許 SQL Server XML ISAPI 處理文件及返回結果集,從而加強了安全性。
指定在帶批注的 XML 數據簡化 (XDR) 架構(也稱為映射架構)上執行的 XPath 查詢。
從概念上講,對映射架構編寫 XPath 查詢與使用 CREATE VIEW 語句創建視圖並對視圖編寫 SQL 查詢相似,例如:http://IISServer/nwind/SchemaVirtualName/schemafile.xml/Customer[@CustomerID="ALFKI"]
target=_blank>http://IISServer/nwind/SchemaVirtualName/schemafile.xml/Customer[@CustomerID="ALFKI"]">http://IISServer/nwind/SchemaVirtualName/schemafile.xml/Customer[@CustomerID="ALFKI"]
在這個 URL 中:
SchemaVirtualName 是使用用於 SQL Server 的 IIS 虛擬目錄管理實用工具創建的 schema 類型的虛擬名稱。
Customer@CustomerID="ALFKI"] 是在該 URL 中指定的 schemafile.xml 上執行的 Xpath 查詢。
直接在 URL 中指定數據庫對象。
可以將數據庫對象指定為 URL 的一部分,並對數據庫對象指定 Xpath 查詢,例如: target=_blank>http://IISServer/nwind/dbobjectVirtualName/XpathQuery
在這個 URL 中,dbobjectVirtualName 是使用用於 SQL Server 的 IIS 虛擬目錄管理實用工具創建的 dbobject 類型的虛擬名稱。
說明當在 URL 中執行需要資源(如內存)的操作(創建臨時表和臨時存儲過程、聲明游標、執行sp_xml_preparedocument 等等)時,必須執行適當的相應命令(如 DROP TABLE、DROP PROCEDURE、DEALLOCATE 游標或 EXECUTE sp_xml_removedocument)以釋放資源。
XML 文檔和文檔片段
當用 root 參數執行模板或查詢時,結果是有單個頂層元素的完整 XML 文檔。例如,下列 URL 執行模板:http://IISServer/VirtualRoot/TemplateVirutalName/MyTemplate.xml
target=_blank>http://IISServer/VirtualRoot/TemplateVirutalName/MyTemplate.xml">http://IISServer/VirtualRoot/TemplateVirutalName/MyTemplate.xml
下面是一個示例模板文件 (MyTemplate.xml):
SELECT *
FROM Customers
FOR XML AUTO
模板中的 標記為結果 XML 文檔提供了單個的頂層元素。
可以直接在 URL 中指定查詢。在此例中,root 參數指定返回文檔中的頂層元素: http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO?root=root
如果在寫上述查詢時不使用 root 參數,將返回一個 XML 文檔片段(即缺少單個頂層元素的 XML 文檔)。 該片段沒有標題信息。例如,下列 URL 將返回文檔片段:http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO
當請求一個 XML 文檔時,將返回用以標識文檔編碼類型的字節順序標記。字節順序標記是用以標識 XML 文檔編碼類型的標准字節順序。XML 分析器使用該字節順序標記確定文檔編碼類型(如 Unicode)。例如,字節順序標記"oxff, 0xfe"將文檔標識為 Unicode。默認情況下,分析器假設 UTF-8 為文檔編碼類型。
當請求 XML 片段時將不返回字節順序標記,因為字節順序標記屬於 XML 文檔標
題,而 XML 片段中沒有標題。
sql_server_utility>使用用於 SQL Server 的 IIS 虛擬目錄管理實用工具
在使用 HTTP 訪問 Microsoft® SQL Server™ 2000 數據庫之前,必須安裝適當的虛擬目錄。在運行 Microsoft Internet 信息服務 (IIS) 的計算機上,使用用於 SQL Server 的 IIS 虛擬目錄管理實用工具(在"SQL Server 工具"程序組中單擊"在 IIS 中配置 SQL XML 支持")定義並注冊新的虛擬目錄,即所謂的虛擬根。該實用工具指示 IIS 在新的虛擬目錄和 Microsoft SQL Server 實例之間創建關聯。
必須將 IIS 服務器和虛擬目錄的名稱指定為 URL 的一部分。虛擬目錄(包括登錄、密碼和訪問權限)中的信息用於建立與特定數據庫的連接並執行查詢。
可以指定 URL:
直接訪問數據庫對象,例如表。
在這種情況下,URL 將包括 dbobject 類型的虛擬名稱。
執行模板文件。
模板是由一個或多個 SQL 語句組成的有效的 XML 文檔。在 URL 中指定模板文件時,將執行存儲在模板文件中的 SQL 命令。可以直接在 URL 中指定 SQL 查詢,但考慮到安全性,不建議這樣做。
執行 XPath 查詢。
對指定作為 URL 一部分的帶批注的映射架構文件執行 XPath 查詢。
虛擬名
若要使模板文件、映射架構文件或數據庫對象(如表或視圖)成為 URL 的一部分,必須創建 template、schema 和 dbobject 類型的虛擬名稱。將虛擬名稱指定為 URL 的一部分,以便執行模板文件、對映射架構文件執行 XPath 查詢或直接訪問數據庫。
在 URL 中指定的虛擬名稱類型(template、schema、dbobject)還用於決定在 URL 中指定的文件類型(模板文件或映射架構文件)。例如,下面的 URL 使用模板訪問 SQL Server 數據庫:http://IISServer/nwind/TemplateVirtualName/Template.xml
target=_blank>http://IISServer/nwind/TemplateVirtualName/Template.xml">http://IISServer/nwind/TemplateVirtualName/Template.xml
TemplateVirtualName 是 template 類型的虛擬名稱,用於標識指定的文件 (Template.xml) 是模板文件。
sql_server_utility>