在使用 http 訪問 microsoft? sql server? 2000 數據庫之前,必須安裝適當的虛擬目錄。在運行 microsoft internet 信息服務 (iis) 的計算機上,使用用于 sql server 的 iis 虛擬目錄管理實用工具(在"sql server 工具"程序組中單擊"在 iis 中配置 sql xml 支持")定義并注冊新的虛擬目錄,即所謂的虛擬根。該實用工具指示 iis 在新的虛擬目錄和 microsoft sql server 實例之間創建關聯。有關該實用工具用戶界面的信息,請參見 iis 虛擬目錄管理實用工具。
必須將 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
templatevirtualname 是 template 類型的虛擬名稱,用于標識指定的文件 (template.xml) 是模板文件。
創建 nwind 虛擬目錄
新增信息 - sql server 2000 sp3。
下例創建 nwind 虛擬目錄。在大多數用于說明 microsoft? sql server? 2000 的 url 訪問的示例中,都使用 nwind 虛擬目錄。
在創建 nwind 虛擬目錄之前,需要一個與將要創建的虛擬目錄相關聯的物理目錄(例如,c:/inetpub/wwwroot/nwind,此處 nwind 是與將要在以下過程中創建的 nwind 虛擬目錄相關聯的物理目錄)。
還需要在與該虛擬目錄相關聯的物理目錄下創建兩個子目錄(例如,c:/inetpub/wwwroot/nwind/template 和
c:/inetpub/wwwroot/nwind/schema)。這些是與 template 和 schema 類型的虛擬名稱相關聯的目錄,這兩種類型的目錄是作為創建 nwind虛擬目錄的一部分而創建的。
創建 nwind 虛擬目錄
在 microsoft sql server 程序組中,單擊"在 iis 中配置 sql xml 支持"。
展開服務器,然后單擊想要的 web 站點。
在"操作"菜單上指向"新建"子菜單,然后單擊"虛擬目錄"命令。新虛擬目錄的屬性頁將顯示在屏幕上。
在"新的虛擬目錄屬性"對話框的"常規"選項卡上,輸入虛擬目錄的名稱。對于本例,鍵入 nwind 和物理目錄路徑(例如c:/inetpub/wwwroot/nwind,假設在 c:/inetpub/wwwroot 目錄中已創建了 nwind 子目錄)?;蛘呖梢允褂?瀏覽"按鈕選擇目錄。
在"安全"選項卡上,選擇"sql server"和"使用 windows 集成身份驗證"。
在"數據源"選項卡上,在"sql server"框中輸入服務器的名稱,例如 (local);如果在指定的計算機上安裝了多個實例,則輸入 sql server2000 實例的名稱(可選)。在"數據庫"框中,輸入 northwind 作為默認數據庫的名稱。
在"設置"選項卡上,選擇"允許 url 查詢"、"允許模板查詢"、"允許 xpath"和"允許 post"選項。
在"虛擬名稱"選項卡上,單擊"新建"按鈕以創建模板類型的虛擬名稱。 
在"虛擬名稱配置"對話框中:
在"虛擬名稱"框內輸入
template(可以是用戶指定的任意名稱)。在"類型"列表中,選擇"模板"。輸入路徑(例如,c:/inetpub/wwwroot/nwind/template,假設與虛擬目錄相關聯的物理目錄下有一個子目錄 template,但并不檢查該目錄是否存在)。單擊"保存"按鈕保存虛擬名稱。
在"虛擬名稱"選項卡上,單擊"新建"按鈕以創建架構類型的虛擬名稱。 
在"虛擬名稱"框內輸入schema(可以是用戶指定的任意名稱)。在"類型"列表中,選擇"架構"。輸入路徑(例如,c:/inetpub/wwwroot/nwind/schema,假設與虛擬目錄相關聯的物理目錄下有一個子目錄 schema)。單擊"保存"按鈕保存虛擬名稱。
在"虛擬名稱"選項卡上,單擊"新建"按鈕以創建模板和架構類型的虛擬名稱。 
在"虛擬名稱"框內輸入 dbobject(可以是用戶指定的任意名稱)。在"類型"列表中,選擇 dbobject。單擊"保存"按鈕保存虛擬名稱。 
單擊"確定"按鈕保存設置。
這就創建了虛擬目錄 nwind。默認情況下,使用該虛擬目錄對 northwind 數據庫執行指定的查詢。
若要測試虛擬目錄,請在瀏覽器中鍵入:/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。有關 sql isapi 擴展所支持的 url 語法的更多信息,請參見 url access。在可以使用http 指定查詢前,必須先用用于 sql server 的 iis 虛擬目錄管理實用工具創建一個虛擬根。有關更多信息,請參見創建 nwind 虛擬目錄。
sql server 的 http 訪問能力使您得以:
直接在 url 中指定 sql 查詢,例如: 
http://iisserver/nwind?sql=select+*+from+customers+for+xml+auto&root=root
指定 for xml 子句以 xml 文檔而不是標準行集的形式返回結果。根參數可標識單一的頂層元素。
直接在 url 中指定模板。 
模板是包含一個或多個 sql 語句的有效的 xml 文檔。模板使您得以將數據放在一起以形成有效的 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 虛擬目錄管理實用工具創建的 template 類型的虛擬名稱。
模板文件還刪除來自用戶的數據庫查詢的詳細信息以增強安全性。通過將模板文件存儲在注冊數據庫時所在的虛擬根目錄(或其子目錄)中,刪除虛擬根上的 url 查詢處理服務并只允許 sql server xml isapi 處理文件及返回結果集,從而加強了安全性。
指定在帶批注的 xml 數據簡化 (xdr) 架構(也稱為映射架構)上執行的 xpath 查詢。 
從概念上講,對映射架構編寫 xpath 查詢與使用 create view 語句創建視圖并對視圖編寫 sql 查詢相似,例如:
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 查詢,例如:
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
下面是一個示例模板文件 (mytemplate.xml):
<root xmlns:sql="urn:schemas-microsoft-com:xml-sql">
    <sql:query>
      select  * 
      from    customers 
      for xml auto
    </sql:query>
</root> 
模板中的 <root> 標記為結果 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 片段中沒有標題。
安全說明  microsoft sqlxml web 發行版增強了對此 xml 功能的支持。要使用最新的增強功能,請從 microsoft web 站點安裝 microsoft 
sqlxml 3.0 service pack 1。此 service pack 附帶的文檔提供了開發應用程序時應考慮的安全事項的信息。
新聞熱點
疑難解答