除了XML 技術之外,Microsoft SQL Server 2000 的開發者們也把通過HTTP 訪問的特性(HTTP Access9 作為SQL Server 2000 的一個核心特性。這樣用戶完全可以把SQL Server 放到一個URL 上了,從而保證開發人員和潛在的最終用戶都能簡單地通過一個URL 來訪問SQL Server。 本節我們主要介紹以下三個問題:
- 如何創建虛擬目錄
- HTTP 的語法
- HTTP 的訪問能力
20.4.1 創建虛擬目錄
在使用HTTP 訪問SQL Server 2000 數據庫前必須首先利用IIS 專門為SQL Server 提供的虛擬目錄管理器來創建虛擬目錄(virtual directory), 同時確保使用的操作系統支持IIS 服務器。創建虛擬目錄其主要目的就是在SQL Server 實例與新創建的虛擬目錄之間建立新的連接。下面以一個具體的例子來介紹創建虛擬目錄要執行哪些步驟。
(1) 在SQL Server Tool 程序單中選擇Configure SQL XML Support in IIS 選項。
(2) 打開要創建虛擬目錄的服務器圖標,然後選擇管理站點圖標。右擊該圖標在彈出菜單中選擇New ,單擊Virtual Directory。
(3) 選中General 標簽頁,如圖20-3 所示。
(4) 該標簽頁用來給出HTTP 存取數據庫數據時所要使用的虛擬目錄以及虛擬目錄的真實目錄的路徑。真實目錄主要存放通過該虛擬目錄要訪問的文件,此外模板文件(template files) 和注釋匹配模式文件(annotated mapping schema files) 也存儲在該目錄。在該例中我們在Virtual Directory Name 中輸入VirtualRoot; 在Local Path 中輸入 E:\Inetpub\wwwroot\ VirtualRoot。
(5) 選中Security 標簽頁,如圖20-4 所示。
該標簽頁用來定義登錄的認證方法,共在三種IIS 認證模式。
- Always log on as
Windows 和SQL Server 帳號與IIS 認證安全的匿名訪問模式相匹配。匿名訪問是指任何人都可以訪問虛擬目錄,但是訪問服務器的任何一個客戶都必須提供正確的帳號和口令才能夠登錄成功。其中SQL Server 選項表示當指定SQL Server 登錄時,虛擬目錄的所有用戶都可以使用該SQL Server 登錄帳號;Windows 選項表示為所有使用該虛擬目錄的用戶指定一個Windows 帳號,在缺省情況下使用安裝IIS 時的缺省用戶IUSR_ServerName。
- Use Windows Integrated Authentication
該選項表示使用Windows NT 或Windows 2000 的IIS 認證方法,即合法的 Windows NT 或Windows 2000 用戶才具有訪問虛擬目錄的權限。該訪問模式要求 Windows 用戶也具有訪問SQL Server 的權限。
- Use Basic Authentication (Clear Text) to SQL Server account
該選項是指通過SQL Server 登錄和口令來進行安全認證。本認證模式與IIS 的基本認證模式不同。我們可以使用匿名認證。
(6) 選中Data Source 標簽頁,如圖20-5 所示。
在Data Source 標簽頁主要完成兩個任務,其一是選擇一個SQL Server 2000 運行實體,其二選擇包含在該實體內且被HTTP 訪問的數據庫。在本例中選擇Pubs 數據庫。
(7) 選中Setting 標簽頁,如圖20-6 所示。 Setting 標簽頁用來確定將使用何種SQL Server 2000 訪問類型來通過虛擬目錄進行數據訪問。應該指出模板(Template) 文件和模式(Schema) 文件可以存儲在任何地方。
- Allow URL querIEs
表示直接在URL 中執行SQL 查詢,但是考慮到訪問的安全性我們建議不使用該選項。
- Allow template querIEs
表示在URL 中執行已存在的模板文件。模板是合法的XML 文檔,包括一個或多個SQL 查詢。在缺省情況下使用該選項。
- Allow XPath
表示直接在URL 中對注釋匹配模式進行查詢。
(8) 選中Virtual Names 標簽頁,如圖20-7 所示。
該標簽頁主要用來定義虛擬名稱。在URL 中只能使用虛擬名稱,基於安全考慮,任何關於執行的對象以及文件的存儲位置等信息都被隱藏。
- Defined virtual names 表示在訪問網絡資源時將要用到的虛擬名稱。比如通過http://IISServer/VirtualRoot/ temvir/可以訪問位於VirtualRoot 虛擬目錄下的temvir。
- Type 指出要創建的虛擬名稱屬於哪一個查詢類型。
- dbobject 表示查詢的是數據庫對象。
- schema 表示對匹配模式執行Xpath 查詢。
- template 表示模板文件中的SQL 查詢。
- path 指出模板或模式所在的目錄路徑,該路徑可以是相對路徑也可以是絕對路徑。如果查詢類型為dbobject, 則不需指明路徑。該路徑可以指文件夾(虛擬名稱)的路徑也可以指一文件路徑。如果指文件夾(虛擬名稱)的路徑,則在URL 中必須加上文件的名稱。例如: http://IISServer/VirtualRoot/ temvir/sample.XML
(9)選中Advanced 標簽頁,如圖20-8 所示。
Advanced 標簽頁主要是用來指定sqlisapi.dll 存放的位置,通過虛擬目錄訪問 SQL Server 2000 實體時需要使用該文件。如果虛擬目錄被創建於遠程服務器上,則必須提供存放位置。在缺省情況下sqlisapi.dll 文件被安裝於Files\Common Files\System\Ole DB 目錄下。
20.4.2 HTTP 的訪問能力
在SQL Server 2000 中,HTTP 的訪問能力得到了明顯的提高用戶,不僅可以在 URL 中直接輸入SQL 語句或存儲過程,而且能夠在URL 中加入模板文件或進行 XPath 查詢。在詳細介紹這些訪問方法之前首先讓讀者了解HTTP 的語法。
圖文3 在URL 中使用模板雖然在URL 中直接執行SQL 語句有著簡單、快速的優點,但是目前這種方式在大部分互聯網環境中都是不合適的。因為開發者不會希望用戶書寫或是看到SQL 語句,因為這可能洩露訪問開發者數據庫的內部機制。出於安全原因,開發者顯然不會希望這樣。因此對於開發人員來說更好的選擇就是允許通過URL 來訪問指定服務器端的XML 模板。這雖然提供了對SQL Server 的直接訪問
您正在看的SQLserver教程是:SQL Server數據庫技術(123)。但是實際已把SQL Select 語句或XPath 查詢請求隱藏在了XML 模板中。因此許多中間層代碼的使用和數據庫交互過程就不必要了。以此方法,可以簡便快速地把數據庫放置到網絡上。這也是SQL Server 為開發人員提供的一種更快捷地跟上市場需要的方法。
圖文