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

SQL Server 2005 建立 HTTP 端點發布預存程序為 Web Service

     編輯:關於SqlServer

核心功能:原生 HTTP/SOAP 端點,無需 IIS

SQL Server 2005 透過 **HTTP.SYS** 核心驅動程式,直接在資料庫引擎層監聽 HTTP 請求,將 T-SQL 批次或預存程序以 **SOAP Web Service** 形式發布。支援 Windows XP SP2 / Server 2003+。

建立端點範例

CREATE ENDPOINT MyEndpoint
STATE = STARTED
AS HTTP (
    AUTHENTICATION = (INTEGRATED),  -- Windows 整合驗證
    PATH = '/sql/myendpoint',       -- URL 路徑
    PORTS = (CLEAR)                 -- HTTP 明文埠 (80)
)
FOR SOAP (
    BATCHES = ENABLED,              -- 允許任意 T-SQL 批次
    WSDL = DEFAULT                  -- 自動產生 WSDL
);

測試與呼叫

  • 瀏覽器測試 WSDL:https://localhost/sql/myendpoint?wsdl
  • 支援豐富查詢參數(詳見線上說明)。

JavaScript 呼叫範例 (AJAX / SOAP)

function SendBatchRequest(strServerName, strUrlPath, strQuery) {
    var objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
    objXMLHttp.open("POST", "https://" + strServerName + strUrlPath, false);
    objXMLHttp.setRequestHeader("Content-Type", "text/xml");
    objXMLHttp.setRequestHeader("Host", strServerName);
    
    var strRequest = "<SOAP-ENV:Envelope xmlns:SOAP-ENV='https://schemas.xmlsoap.org/soap/envelope/' xmlns:sql='https://schemas.microsoft.com/sqlserver/2004/SOAP'>"
        + "<SOAP-ENV:Body><sql:sqlbatch><sql:BatchCommands>" + strQuery + "</sql:BatchCommands></sql:sqlbatch>"
        + "</SOAP-ENV:Body></SOAP-ENV:Envelope>";
    
    objXMLHttp.send(strRequest);
    if (objXMLHttp.status == 200) return objXMLHttp.responseXML.xml;
    return "";
}

var result = SendBatchRequest('localhost', '/sql/myendpoint', 'SELECT * FROM sys.http_endpoints');

關鍵優勢與注意

  • **零中介層**:直接從前端 (JS、行動裝置、非 Windows 用戶端) 呼叫資料庫邏輯。
  • **整合驗證**:利用 Windows/Kerberos 認證,安全性高。
  • **效能考量**:大量並發 HTTP 請求會消耗 SQL Server 工作執行緒,**建議僅用於輕量級整合**,高負載 Web API 仍建議透過中介層 (WCF/Web API) 隔離。
  • **安全強化**:生產環境務必啟用 SSL (PORTS = (SSL))、限制 BATCHES 僅允許特定預存程序 (WEBMETHODS),避免任意 SQL 注入風險。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved