SQL Server 內建 SOAP 1.2、WSDL 1.1、HTTP 堆疊,無需 IIS 即可直接對外發布 Web 服務。消除中介層,降低延遲、部署複雜度與授權成本。可作為 SOA 架構的服務提供者參與企業整合。
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 = 'https://Adventure-Works/Customers/'
);
STATE = STARTED:立即啟動監聽。SITE = '*':繫結所有 IP;PATH:URL 路徑。AUTHENTICATION = (BASIC):HTTP Basic 驗證,**禁止匿名存取**,符合「安全預設」原則。PORTS = (SSL):強制 HTTPS,傳輸層加密。WEBMETHOD:對應單一預存程序,SCHEMA = STANDARD 產生標準 DataSet 結構。LOGIN_TYPE = MIXED:支援 SQL 驗證與 Windows 驗證。BATCHES = ENABLED:允許透過 SOAP 執行任意 T-SQL 批次(謹慎開放)。非 Windows 平台(Linux/Unix/Java/Perl)僅需支援 HTTP + Basic Auth + SOAP 1.2 即可呼叫。
Perl 範例:
use SOAP::Lite;
my $soap = SOAP::Lite
-> uri('https://Adventure-Works/Customers/')
-> proxy('https://sqlserver:443/sql/sql_auth',
credentials => ['sqlserver:443', 'realm', 'user', 'pass']);
my $result = $soap->GetCustomerInfo($customerId);
sys.endpoints、sys.soap_endpoints 移除廢棄端點。