使用 Http.sys 保留 URL 命名空間

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

您可以明確地保留 HTTP.SYS 中的 URL 命名空間,然後使用這個命名空間,建立 HTTP 結束點。若要這樣做,您必須了解明確及隱含命名空間保留的概念,以及 SQL Server 如何利用 HTTP.SYS 登錄 HTTP 結束點。

明確與隱含命名空間保留

當使用者執行如下的 CREATE ENDPOINT 陳述式時:

CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS HTTP (
   PATH = '/sql/AdvWorks', 
   AUTHENTICATION = (INTEGRATED ), 
   PORTS = ( CLEAR ), 
   SITE = 'MyServer'
)
FOR SOAP (
    ...
)
Go

命名空間 http://MyServer:80/sql/AdvWorks 是隱含地保留在 HTTP.SYS。這表示當 SQL Server 架構的應用程式正在執行時,這個結束點的任何 HTTP 要求都會轉送到 SQL Server 的執行個體。然而,如果 SQL Server 的執行個體不在執行中,則其他應用程式可以採用這個命名空間。

當您明確地保留命名空間時,命名空間是特別保留給 SQL Server 使用,而且這個結束點的所有 HTTP 要求都會轉送到 SQL Server 的執行個體。如需詳細資訊,請參閱<保留 HTTP 命名空間>。

[!附註]

Visual Studio 2005 及 Http.sys 會遵循不同的 URL 標準化規則。例如,建立結束點時,Http.sys 可以接受將內含的萬用字元 (如 "/SQL/Mypath/...") 指定為 PATH 設定的一部份。然而,Visual Studio 2005 具有更嚴格的標準化規則,因此在傳輸 URL 前,會修剪 "..." 資訊。

SQL Server 如何登錄結束點

若要管理 HTTP 結束點,您可以使用 CREATE ENDPOINTALTER ENDPOINTDROP ENDPOINT。您必須具有必要的權限,才能建立、修改或卸除結束點。這會於<GRANT 端點權限 (Transact-SQL)>主題中加以描述。

當您執行 CREATE ENDPOINT 以建立端點時,SQL Server 會執行陳述式,並利用 HTTP.SYS 登錄端點。根據指定端點陳述式的內容,SQL Server 會模擬呼叫者,如下所示:

  • 如果您在 Windows 帳戶的內容中執行陳述式,則 SQL Server 會模擬呼叫者,利用 HTTP.SYS 登錄端點。

  • 如果您在 SQL Server 帳戶的內容中執行陳述式 (例如,sa 或其他一些 SQL Server 登入),SQL Server 會使用安裝 SQL Server 時所指定的 SQL Server 服務帳戶,模擬呼叫者以利用 HTTP.SYS 登錄端點。

SQL Server 模擬的 Windows 帳戶及 SQL Server 帳戶必須具有本機 Windows 系統管理員權限,HTTP 結束點登錄才能成功。

驗證 HTTP 命名空間保留

若要判定哪些命名空間會保留在 HTTP.SYS 中,您可以在命令提示字元中執行 HTTP 組態公用程式 (Httpcfg.exe)。

[!附註]

Httpcfg.exe 已安裝為 Windows 伺服器支援工具的一部份。如需詳細資訊,請參閱<設定 HTTP 核心模式驅動程式 (Http.sys)>。

下列是使用 Httpcfg.exe 傳回保留 HTTP 命名空間清單的範例:

httpcfg query urlacl

這個命令將顯示所有現有命名空間保留的清單,同時傳回它是保留在哪一個命名空間 URL 及帳戶下。

以下是這個命令的典型輸出:

URL: http://adventure-works.com:80/sql/
ACL : D:(A;;GA;;;S-1-5-21-123456789-1234567890-1262470759-1010)
-----------------------------------------------------------------
URL : https://adventure-works.com:443/sql/
ACL : D:(A;;GA;;;NS)
-----------------------------------------------------------------

[!附註]

這個程序只能由 sysadmin 角色的成員執行,而且需要模擬帳戶對電腦具有系統管理員權限。