首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 原生 Web 服務架構與異構環境整合方案

     編輯:關於SqlServer

核心架構創新

SQL Server 內建 SOAP 1.2、WSDL 1.1、HTTP 堆疊,無需 IIS 即可直接對外發布 Web 服務。消除中介層,降低延遲、部署複雜度與授權成本。可作為 SOA 架構的服務提供者參與企業整合。

發布預存程序為 Web 服務:建立端點

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);

適用場景

  • 跨平台資料存取(Java、PHP、Python、行動裝置)。
  • 防火牆僅開放 443 埠,無法使用 TDS 協議(1433)。
  • 服務導向架構 (SOA) 服務化資料庫邏輯。
  • 舊系統整合無法安裝 SQL Client 的環境。

安全強化建議

  • 僅發布必要預存程序,嚴禁開放 BATCHES 除非極少數受控情境。
  • 端點層級啟用 SSL、Basic Auth 搭配強式密碼策略。
  • 定期審核 sys.endpoints、sys.soap_endpoints 移除廢棄端點。
  • 監控錯誤日誌與稽核登入失敗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved