Share via


設定伺服器接聽原生 XML Web Service 的要求

將 SQL Server 2005 的執行個體設定為可接聽原生 HTTP SOAP 要求的 Web 服務,需要建立 HTTP 結束點 (URL 命名空間) 並且定義其屬性,以及公開結束點的方法。

用來在 SQL Server 2005 中使用所建立的 HTTP 結束點,可以接聽並接收 TCP 通訊埠 (通訊埠 80) 的要求,此通訊埠與 Microsoft Internet Information Services (IIS) for World Wide Web 服務相同。因為每一個 URL (無論是否由 SQL Server 或 IIS 使用) 都會登錄在 作業系統中,以便透過系統 HTTP 接聽程式處理序 (Http.sys) 使用。

例如,假設您建立了一個結束點,其 URL 是 http://MyServer/MySql endpoint。此結束點就會登錄在 Http.sys。當 SOAP 要求傳送到此結束點,要求就會先到達 URL 中所識別的伺服器 (MyServer)。一旦接收要求,伺服器的 Http.sys 層會比較 URL 的其他部份和已登錄的結束點,並且將要求直接轉送到 SQL Server 的執行個體,而不使用 IIS。此外,您可以使用「Internet 服務管理員」(Inetmgr.exe) 主控台,以不同的 URL 建立一個相當於用在 IIS 之 HTTP 結束點的虛擬目錄,例如 http://MyServer/MyVDir

建立和管理結束點

若要建立和管理結束點,請使用下列 Transact-SQL 陳述式:

  • CREATE ENDPOINT
    用來建立結束點、定義用戶端應用程式可將 HTTP SOAP 要求傳送到結束點的方法,以及設定驗證並指定通訊埠。
  • ALTER ENDPOINT
    用來新增、卸除或修改方法或是變更結束點選項。
  • DROP ENDPOINT
    用來刪除不想要或過時的結束點。

結束點的權限和驗證

若要建立、修改或卸除 HTTP 結束點,您必須具備權限。存取結束點也需要驗證。下列主題描述這些需求:

Web 的程式設計支援

若要公開預存程序或使用者自訂的函數,請參閱下列主題:

預設執行環境

根據預設,對 SQL Server 2005 中原生 XML Web Service 的 HTTP SOAP 要求會以下表列出的設定值執行。

  • SET ANSI_NULL_DFLT_ON ON
    如果資料庫的 ANSI NULL 預設選項是 FALSE,則新資料行的預設 Null 屬性會被覆寫。如需詳細資訊,請參閱<SET ANSI_NULL_DFLT_ON (Transact-SQL)>。
  • SET NUMERIC_ROUNDABORT OFF
    損失精確度並不會產生錯誤訊息,並且結果將進位成儲存該結果之資料行或變數的精確度。如需詳細資訊,請參閱<SET NUMERIC_ROUNDABORT (Transact-SQL)>。
  • SET ARITHABORT ON
    如果在查詢執行期間發生溢位或除以零的錯誤,將會終止查詢或批次。如需詳細資訊,請參閱<SET ARITHABORT (Transact-SQL)>。
  • SET ANSI_WARNINGS ON
    如果彙總函數 (如 SUM 或 AVG) 中出現 Null 值,則會產生警告訊息。如需詳細資訊,請參閱<SET ANSI_WARNINGS (Transact-SQL)>。
  • SET ANSI_NULLS ON
    使用等於 (=) 或不等於 (<>) 運算子與 Null 值比較時會傳回 FALSE。如需詳細資訊,請參閱<SET ANSI_NULLS (Transact-SQL)>。
  • SET ANSI_PADDING ON
    資料行儲存的值比資料行定義的大小還短時,會填補值。資料為 charvarcharbinaryvarbinary 的資料行有尾端空白時,不會修剪尾端空白或零。如需詳細資訊,請參閱<SET ANSI_PADDING (Transact-SQL)>。
  • SET IMPLICIT_TRANSACTIONS OFF
    根據預設,HTTP SOAP 工作階段中的交易,會以自動認可的模式進行作業,在該模式中,會認可所有順利完成的個別陳述式。如需詳細資訊,請參閱<SET IMPLICIT_TRANSACTIONS (Transact-SQL)>。

HTTP SOAP 服務的 SQL Server 2005 叢集容錯移轉考量

安裝 SQL Server 2005 時,最好能使用網域帳戶做為 SQL 服務帳戶,並確定該帳戶沒有本機電腦的完整管理權限。在 Windows 叢集上設定 SQL Server 做為虛擬伺服器時,這麼做是有某些含意的。這些考量是關於設定 SQL HTTP-SOAP 原生服務。

SQL Server 2005 利用 的 HTTP 驅動程式。此 HTTP 接聽程式是用以在 Windows 平台中將要求路由至任何訂閱服務的應用程式,包括 SQL Server 與 IIS 服務。為了訂閱此服務,應用程式需要呼叫 HTTP API 以保留應用程式的特定根目錄 URL,又稱為命名空間。此保留可讓 HTTP 驅動程式從該 URL 將所有後續的要求路由至訂閱的應用程式。對於這些 HTTP API 的呼叫必須在擁有本機 Windows 管理權限的帳戶下進行。在 SQL Server 2005 中,是使用稱為 sp_reserve_http_namespaces 的特殊預存程序來執行這些呼叫 (請參閱<保留 HTTP 命名空間>以取得詳細資訊)。此程序會針對 Windows HTTP 驅動程式路由建立根目錄 URL 與 SQL 服務帳戶之間的繫結。如果 SQL 服務帳戶沒有本機的管理權限,預存程序必須改用 Windows 本機管理帳戶來呼叫預存程序。一旦註冊此命名空間,就可以在該 URL 下建立 SQL SOAP 結束點,以利重新導向後續的 HTTP 要求。在叢集設定中,本機 Windows 管理員必須在每一個節點上建立 HTTP 命名空間保留。這將可確保若在任何節點上發生容錯移轉,HTTP 服務仍然可將要求路由至 SQL 伺服器。

另一個對 SQL Server 2005 與 HTTP-SOAP 的叢集容錯移轉之考量,是針對透過 SSL 通道的要求使用加密憑證的情況。如需詳細資訊,請參閱<設定 SSL 使用的憑證>。在叢集環境中,需要對每一個節點設定憑證。這些憑證的主體必須是虛擬伺服器名稱的完整名稱。若要確定已設定透過 HTTP 的 Kerberos 認證,請參閱<使用 Http.sys 註冊 Kerberos 服務主要名稱>,這也適用於叢集。

請參閱

參考

SOAP 要求與回應訊息結構
SOAP 要求與回應訊息結構
原生 XML Web Service 中的指導方針和限制

概念

使用 WSDL

其他資源

撰寫用戶端應用程式
在 SQL Server 2005 使用原生 XML Web Service

說明及資訊

取得 SQL Server 2005 協助