摘要:獲得有關如何設置 SQL Server 以便在異類環境中進行 Web 服務訪問的詳細討論,並且了解更多有關 SQL Server 中 Web
服務的主要方案的信息。
下載相關的 代碼示例。
在 SQL Server 中,我們向數據庫引擎中添加了對本機 XML Web 服務的支持。這一功能是圍繞眾所周知的標准(如 SOAP 1.2
、WSDL 1.1 和 HTTP)設計的。將解決方案建立在這些標准之上,可以在大多數企業都擁有的異類環境中支持互操作性和服務擴張。
添加到 SQL Server 中的新的基礎結構大大有利於直接向服務器外部公開 Web 服務,這是因為將本機 SOAP 堆棧內置到數據庫
引擎中消除了使用中間層進程(如 IIS)達到這一目標的需要。它還使 SQL Server 能夠作為組件參與面向服務的體系結構,
因為服務在這些新的體系結構中提供了黏合劑。本機 XML Web 服務使您既可以將存儲過程作為 Web 服務公開,而且可以針對
數據庫服務器執行特殊的 T-SQL 語句。實際上,我們已經基於 SOAP 創建了一種新的訪問 SQL Server 的機制;SOAP 提供了
與當前的 Tabular Data Stream (TDS) 專用二進制協議幾乎相同的功能。
我們首先詳細考察如何設置 SQL Server 以便在異類環境中進行 Web 服務訪問。我們將查看如何使用 Perl 腳本進行數據庫
管理,並且簡要考察一下其他可以使用本機 Web 服務的方案。
請考慮這樣一個環境,在這裡,運行在非 Microsoft 操作系統上的應用程序需要連接到 SQL Server。對於此類應用程序,
我們的建議是使用 SQL Server 授權 (SQL-Auth) 連接到 SQL Server Web 服務。讓我們考察一下該機制是如何工作的。
要公開 Web 服務,用戶需要做的第一件事情是創建一個終結點。請觀察如下所示的用於創建終結點的數據定義語言 (DDL)
語句。它將一個名為“GetCustomerInfo”的存儲過程公開為 Web 服務。
注 盡管術語 WEBMETHOD 在概念上與 ASP.Net 中的 [WebMethod] 相同,但它在其他方面與 ASP.Net 無關。
CREATE ENDPOINT sql_auth_endpoint
STATE = STARTED AS HTTP( SITE = '*', PATH = '/sql/sql_auth',
AUTHENTICATION = (BASIC), PORTS=(SSL) )
FOR SOAP(
WEBMETHOD'GetCustomerInfo'
(
name='AdventureWorks.dbo.GetCustomerInfo',
schema=STANDARD ) ,
LOGIN_TYPE = MIXED,
WSDL = DEFAULT,
DATABASE = 'AdventureWorks',
BATCHES=ENABLED,
NAMESPACE = 'http://Adventure-Works/Customers/' )
為了保持 SQL Server 中的“設計安全”主題,我們在任何情況下都不允許對 SQL Server 進行 ANONYMOUS 訪問。這意味
著所有連接都需要使用受支持的身份驗證方案之一在 HTTP 傳輸級別進行身份驗證。BASIC 是最常見和使用最廣泛的身份驗