使用用于SQL Server的IIS虛擬目錄管理實用工具
在使用 HTTP 訪問 Microsoft? SQL Server? 2000 數(shù)據(jù)庫之前,必須安裝適當?shù)奶摂M目錄。在運行 Microsoft Internet 信息服務 (IIS) 的計算機上,使用用于 SQL Server 的 IIS 虛擬目錄管理實用工具(在'SQL Server 工具'程序組中單擊'在 IIS 中配置 SQL XML 支持')定義并注冊新的虛擬目錄,即所謂的虛擬根。該實用工具指示 IIS 在新的虛擬目錄和 Microsoft SQL Server 實例之間創(chuàng)建關(guān)聯(lián)。有關(guān)該實用工具用戶界面的信息,請參見 IIS 虛擬目錄管理實用工具。
必須將 IIS 服務器和虛擬目錄的名稱指定為 URL 的一部分。虛擬目錄(包括登錄、密碼和訪問權(quán)限)中的信息用于建立與特定數(shù)據(jù)庫的連接并執(zhí)行查詢。
可以指定 URL:
直接訪問數(shù)據(jù)庫對象,例如表。 在這種情況下,URL 將包括 dbobject 類型的虛擬名稱。
執(zhí)行模板文件。 模板是由一個或多個 SQL 語句組成的有效的 XML 文檔。在 URL 中指定模板文件時,將執(zhí)行存儲在模板文件中的 SQL 命令。可以直接在 URL中指定 SQL 查詢,但考慮到安全性,不建議這樣做。
執(zhí)行 XPath 查詢。 對指定作為 URL 一部分的帶批注的映射架構(gòu)文件執(zhí)行 XPath 查詢。
虛擬名若要使模板文件、映射架構(gòu)文件或數(shù)據(jù)庫對象(如表或視圖)成為 URL 的一部分,必須創(chuàng)建 template、schema 和 dbobject 類型的虛擬名稱。將虛擬名稱指定為 URL 的一部分,以便執(zhí)行模板文件、對映射架構(gòu)文件執(zhí)行 XPath 查詢或直接訪問數(shù)據(jù)庫。
在 URL 中指定的虛擬名稱類型(template、schema、dbobject)還用于決定在 URL 中指定的文件類型(模板文件或映射架構(gòu)文件)。例如,
下面的 URL 使用模板訪問 SQL Server 數(shù)據(jù)庫:
http://IISServer/nwind/TemplateVirtualName/Template.xml
TemplateVirtualName 是 template 類型的虛擬名稱,用于標識指定的文件 (Template.xml) 是模板文件。
創(chuàng)建 nwind 虛擬目錄
新增信息 - SQL Server 2000 SP3。
下例創(chuàng)建 nwind 虛擬目錄。在大多數(shù)用于說明 Microsoft? SQL Server? 2000 的 URL 訪問的示例中,都使用 nwind 虛擬目錄。
在創(chuàng)建 nwind 虛擬目錄之前,需要一個與將要創(chuàng)建的虛擬目錄相關(guān)聯(lián)的物理目錄(例如,C:InetpubWwwrootnwind,此處 nwind 是與將要在以下過程中創(chuàng)建的 nwind 虛擬目錄相關(guān)聯(lián)的物理目錄)。
還需要在與該虛擬目錄相關(guān)聯(lián)的物理目錄下創(chuàng)建兩個子目錄(例如,C:InetpubWwwrootnwindtemplate 和
C:InetpubWwwrootnwindschema)。這些是與 template 和 schema 類型的虛擬名稱相關(guān)聯(lián)的目錄,這兩種類型的目錄是作為創(chuàng)建 nwind虛擬目錄的一部分而創(chuàng)建的。
創(chuàng)建 nwind 虛擬目錄
在 Microsoft SQL Server 程序組中,單擊'在 IIS 中配置 SQL XML 支持'。
展開服務器,然后單擊想要的 Web 站點。
在'操作'菜單上指向'新建'子菜單,然后單擊'虛擬目錄'命令。新虛擬目錄的屬性頁將顯示在屏幕上。
在'新的虛擬目錄屬性'對話框的'常規(guī)'選項卡上,輸入虛擬目錄的名稱。對于本例,鍵入 nwind 和物理目錄路徑(例如C:InetpubWwwrootnwind,假設在 C:InetpubWwwroot 目錄中已創(chuàng)建了 nwind 子目錄)。或者可以使用'瀏覽'按鈕選擇目錄。
在'安全'選項卡上,選擇'SQL Server'和'使用 Windows 集成身份驗證'。
在'數(shù)據(jù)源'選項卡上,在'SQL Server'框中輸入服務器的名稱,例如 (local);如果在指定的計算機上安裝了多個實例,則輸入 SQL Server2000 實例的名稱(可選)。在'數(shù)據(jù)庫'框中,輸入 Northwind 作為默認數(shù)據(jù)庫的名稱。
在'設置'選項卡上,選擇'允許 URL 查詢'、'允許模板查詢'、'允許 XPath'和'允許 POST'選項。
在'虛擬名稱'選項卡上,單擊'新建'按鈕以創(chuàng)建模板類型的虛擬名稱。 在'虛擬名稱配置'對話框中:
在'虛擬名稱'框內(nèi)輸入
template(可以是用戶指定的任意名稱)。在'類型'列表中,選擇'模板'。輸入路徑(例如,C:InetpubWwwrootnwindtemplate,假設與虛擬目錄相關(guān)聯(lián)的物理目錄下有一個子目錄 template,但并不檢查該目錄是否存在)。單擊'保存'按鈕保存虛擬名稱。
在'虛擬名稱'選項卡上,單擊'新建'按鈕以創(chuàng)建架構(gòu)類型的虛擬名稱。 在'虛擬名稱'框內(nèi)輸入schema(可以是用戶指定的任意名稱)。在'類型'列表中,選擇'架構(gòu)'。輸入路徑(例如,C:InetpubWwwrootnwindschema,假設與虛擬目錄相關(guān)聯(lián)的物理目錄下有一個子目錄 schema)。單擊'保存'按鈕保存虛擬名稱。
在'虛擬名稱'選項卡上,單擊'新建'按鈕以創(chuàng)建模板和架構(gòu)類型的虛擬名稱。 在'虛擬名稱'框內(nèi)輸入 dbobject(可以是用戶指定的任意名稱)。在'類型'列表中,選擇 dbobject。單擊'保存'按鈕保存虛擬名稱。
單擊'確定'按鈕保存設置。
這就創(chuàng)建了虛擬目錄 nwind。默認情況下,使用該虛擬目錄對 Northwind 數(shù)據(jù)庫執(zhí)行指定的查詢。
若要測試虛擬目錄,請在瀏覽器中鍵入:/nwind?sql=SELECT'>http://<IISServer>/nwind?sql=SELECT * FROM Employees FOR XML AUTO&root=root 并按 ENTER 鍵。
使用 HTTP 訪問 SQL Server
新增信息 - SQL Server 2000 SP3。
可以使用 HTTP 訪問 Microsoft? SQL Server? 2000。有關(guān) SQL ISAPI 擴展所支持的 URL 語法的更多信息,請參見 URL Access。在可以使用HTTP 指定查詢前,必須先用用于 SQL Server 的 IIS 虛擬目錄管理實用工具創(chuàng)建一個虛擬根。有關(guān)更多信息,請參見創(chuàng)建 nwind 虛擬目錄。
SQL Server 的 HTTP 訪問能力使您得以:
直接在 URL 中指定 SQL 查詢,例如: http://IISServer/nwind?sql=SELECT+*+FROM+Customers+FOR+XML+AUTO&root=root
指定 FOR XML 子句以 XML 文檔而不是標準行集的形式返回結(jié)果。根參數(shù)可標識單一的頂層元素。
直接在 URL 中指定模板。 模板是包含一個或多個 SQL 語句的有效的 XML 文檔。模板使您得以將數(shù)據(jù)放在一起以形成有效的 XML 文檔,但直接在 URL 中指定查詢時不一定是這樣。例如:
SELECT+*+FROM+Customers+FOR+XM'>http://IISServer/nwind?template=<ROOT+xmlns:sql='urn:schemas-microsoft-com:xml-sql'><sql:query>SELECT+*+FROM+Customers+FOR+XM
L+AUTO</sql:query></ROOT>
在 URL 中指定模板文件。 在 URL 中寫入長 SQL 查詢會很麻煩。此外,瀏覽器對在 URL 中可以輸入的文本量可能有限制。若要避免這些問題,可以編寫模板并將其存儲在文件中。模板是包含一個或多個 SQL 語句和 XPath 查詢的有效的 XML 文檔。可以在 URL 中直接指定模板文件,例如:
http://IISServer/nwind/TemplateVirtualName/templatefile.xml
在 URL 中,TemplateVirtualName 是使用用于 SQL Server 的 IIS 虛擬目錄管理實用工具創(chuàng)建的 template 類型的虛擬名稱。
模板文件還刪除來自用戶的數(shù)據(jù)庫查詢的詳細信息以增強安全性。通過將模板文件存儲在注冊數(shù)據(jù)庫時所在的虛擬根目錄(或其子目錄)中,刪除虛擬根上的 URL 查詢處理服務并只允許 SQL Server XML ISAPI 處理文件及返回結(jié)果集,從而加強了安全性。
指定在帶批注的 XML 數(shù)據(jù)簡化 (XDR) 架構(gòu)(也稱為映射架構(gòu))上執(zhí)行的 XPath 查詢。 從概念上講,對映射架構(gòu)編寫 XPath 查詢與使用 CREATE VIEW 語句創(chuàng)建視圖并對視圖編寫 SQL 查詢相似,例如:
http://IISServer/nwind/SchemaVirtualName/schemafile.xml/Customer[@CustomerID='ALFKI']
在這個 URL 中:
SchemaVirtualName 是使用用于 SQL Server 的 IIS 虛擬目錄管理實用工具創(chuàng)建的 schema 類型的虛擬名稱。
Customer[@CustomerID='ALFKI'] 是在該 URL 中指定的 schemafile.xml 上執(zhí)行的 Xpath 查詢。 直接在 URL 中指定數(shù)據(jù)庫對象。 可以將數(shù)據(jù)庫對象(如表和視圖)指定為 URL 的一部分,并對數(shù)據(jù)庫對象指定 Xpath 查詢,例如:
http://IISServer/nwind/dbobjectVirtualName/XpathQuery
在這個 URL 中,dbobjectVirtualName 是使用用于 SQL Server 的 IIS 虛擬目錄管理實用工具創(chuàng)建的 dbobject 類型的虛擬名稱。
說明; 當在 URL 中執(zhí)行需要資源(如內(nèi)存)的操作(創(chuàng)建臨時表和臨時存儲過程、聲明游標、執(zhí)行sp_xml_preparedocument 等等)時,必須執(zhí)行適當?shù)南鄳睿ㄈ?DROP TABLE、DROP PROCEDURE、DEALLOCATE 游標或 EXECUTE sp_xml_removedocument)以釋放資源。
XML 文檔和文檔片段當用 root 參數(shù)執(zhí)行模板或查詢時,結(jié)果是有單個頂層元素的完整 XML 文檔。例如,下列 URL 執(zhí)行模板:
http://IISServer/VirtualRoot/TemplateVirutalName/MyTemplate.xml
下面是一個示例模板文件 (MyTemplate.xml):
<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'> <sql:query> SELECT; * FROM;Customers FOR XML AUTO </sql:query></ROOT>
模板中的 <ROOT> 標記為結(jié)果 XML 文檔提供了單個的頂層元素。
可以直接在 URL 中指定查詢。在此例中,root 參數(shù)指定返回文檔中的頂層元素:
http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO&root=root
如果在寫上述查詢時不使用 root 參數(shù),將返回一個 XML 文檔片段(即缺少單個頂層元素的 XML 文檔)。 該片段沒有標題信息。例如,下列URL 將返回文檔片段:
http://IISServer/VirtualRoot?sql=SELECT * FROM Customers FOR XML AUTO
當請求一個 XML 文檔時,將返回用以標識文檔編碼類型的字節(jié)順序標記。字節(jié)順序標記是用以標識 XML 文檔編碼類型的標準字節(jié)順序。XML分析器使用該字節(jié)順序標記確定文檔編碼類型(如 Unicode)。例如,字節(jié)順序標記'oxff, 0xfe'將文檔標識為 Unicode。默認情況下,分析器假設 UTF-8 為文檔編碼類型。
當請求 XML 片段時將不返回字節(jié)順序標記,因為字節(jié)順序標記屬于 XML 文檔標題,而 XML 片段中沒有標題。
安全說明; Microsoft SQLXML Web 發(fā)行版增強了對此 XML 功能的支持。要使用最新的增強功能,請從 Microsoft Web 站點安裝 Microsoft
SQLXML 3.0 Service Pack 1。此 Service Pack 附帶的文檔提供了開發(fā)應用程序時應考慮的安全事項的信息。
