如何使用指令碼,以程式設計的方式開啟 SQL Server 使用在執行 Windows XP Service Pack 2 的系統上的連接埠

文章翻譯 文章翻譯
文章編號: 839980 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

簡介

Microsoft Windows XP Service Pack 2 (SP2) 包含了 Windows 防火牆。Windows 防火牆是增強的版本的網際網路連線防火牆 (ICF)。根據預設 Windows 正在執行 Windows XP Service Pack 2 的電腦上啟用防火牆。 Windows 防火牆會封鎖一些網路連線使用 TCP/IP,使用具名管道 」,或在使用多重通訊協定遠端程序呼叫 (RPC)。此封鎖會影響 Microsoft 資料引擎 (MSDE)、 Microsoft SQL Server 2000 和 Microsoft SQL Server 2005。

如果您的應用程式所需的 SQL Server 或 MSDE 有存取網路,使用 「 具名管道 」、 使用 TCP/IP,或使用 RPC,您可以使用 < 其他相關資訊 > 一節中所提供的指令碼開啟必要的連接埠,以程式設計的方式代替使用 Windows 防火牆。

本文包含兩個指令碼。第一個指令碼以程式設計方式設定 Windows 防火牆 」 允許 SQL Server,以在網路上的所有通訊協定上聆聽。第二個指令碼以程式設計方式設定 Windows 防火牆 」 讓 SQL Server 只在 TCP/IP 上接聽。

附註我們建議您開啟連接埠為基礎的臨時性只。


本文中討論的指令碼透過具名管道存取只提供多重通訊協定 (RPC)。如果您透過 TCP 執行 RPC,請參閱下列的 Microsoft 知識庫文件中,使用 TCP/IP 的相關資訊:
841252如何以手動方式啟用 Windows XP Service Pack 2 上的 TCP/IP SQL Server 2000

其他相關資訊

您可以使用開啟的所有連接埠的指令碼

本節以程式設計方式所討論的指令碼設定 Windows 防火牆 」 允許 SQL Server,以在網路上的所有通訊協定上聆聽。

關於此指令碼的重要注意事項
  • 這個指令碼只應在執行 Windows XP Service Pack 2 的電腦上執行。
  • 此指令碼有額外的選項啟用具名管道 」,然後啟用多重通訊協定 (RPC)。
  • 這個指令碼以啟用多重通訊協定 (RPC) 只能透過具名管道和唯一開啟連接埠 445。
  • 這個指令碼未提供指定範圍的功能。

若要建立指令碼,請依照下列步驟執行:
  1. 啟動 [記事本]。
  2. 複製並貼入 [記事本] 中的下列程式碼:
    echo off
    
    if "%1"=="-np" goto HandleNp
    if "%1"=="-rpc" goto HandleRpc
    if "%1"=="-tcp" goto HandleTcp
    if "%1"=="-browser" goto HandleBrowser
    
    rem Usage
    :Usage
    
    echo "Usage: setupSqlServerPortAll -[np | rpc | tcp | browser] -port [portnum] -[enable | disable]
    echo "-np : Setup SQLServer to listen on Named Pipe connections for local subnet only"
    echo "-rpc : Setup SQLServer to listen on RPC multiprotocol for local subnet only"
    echo "-tcp : Setup SQLServer to listen on TCP connections for local subnet only"
    echo "       Must specify a port if -tcp option is chosen."
    echo "-browser :  Setup SQLServer to provide SSRP service to support named instances"
    echo "-port : Applies only for tcp"
    echo " One of the following options MUST be specified"
    echo "-enable: Enables a port"
    echo "-disable: Disables a port"
    
    goto Exit
    
    :HandleTcp
    echo %2
    if "%2"=="-port" goto cont
    goto Usage
    :cont
    if "%3"=="" goto Usage
    if "%4"=="-enable" goto EnableTcp
    if "%4"=="-disable" goto DisableTcp
    goto Usage
    
    :EnableTcp
    echo "Enabling SQLServer tcp access for port %3 local subnet only"
    netsh firewall set portopening tcp %3 SQL%3 ENABLE subnet
    goto Exit
    
    :DisableTcp
    echo Disabling SQLServer tcp access for port %3 local subnet only"
    netsh firewall set portopening tcp %3 SQL%3 disable subnet 
    goto Exit
    
    :HandleNp
    if "%2"=="-enable" goto EnableNp
    if "%2"=="-disable" goto DisableNp
    goto Usage
    
    :EnableNp
    echo "Enabling SQLServer named pipe access for local subnet only"
    netsh firewall set portopening tcp 445 SQLNP ENABLE subnet
    goto Exit
    
    :DisableNp
    echo Disabling SQLServer named pipe access for local subnet only"
    netsh firewall set portopening tcp 445 SQLNP DISABLE subnet
    goto Exit
    
    :HandleRpc
    if "%2"=="-enable" goto EnableRpc
    if "%2"=="-disable" goto DisableRpc
    goto Usage
    
    :EnableRpc
    echo "Enabling SQLServer multiprotocol access for local subnet only"
    netsh firewall set portopening tcp 445 SQLNP enable subnet
    goto Exit
    
    :DisableRpc
    echo Disabling SQLServer multiprotocol access for local subnet only"
    netsh firewall set portopening tcp 445 SQLNP disable subnet
    goto Exit
    
    :HandleBrowser
    if "%2"=="-enable" goto EnableBrowser
    if "%2"=="-disable" goto DisableBrowser
    goto Usage
    
    :EnableBrowser
    echo "Enabling SQLServer SSRP service for local subnet only"
    netsh firewall set portopening udp 1434 SQLBrowser enable subnet
    goto Exit
    
    :DisableBrowser
    echo "Enabling SQLServer SSRP service for local subnet only"
    netsh firewall set portopening udp 1434 SQLBrowser disable subnet
    goto Exit
    
    :Exit
    endlocal
    
    
  3. 將檔案儲存成.txt 檔案,做為檔案名稱 ConfigSQLPorts.txt。
  4. ConfigSQLPorts.txt 檔案重新命名為 ConfigSQLPorts.bat。

時 ConfigSQLPorts.bat 檔案中執行指令碼,您必須使用電腦上儲存指令碼。若要執行指令碼,請依照下列步驟執行:
  1. 按一下 [開始],再按一下 [執行]、 輸入 cmd,] 然後再按一下 [確定]
  2. 在 [命令] 視窗中使用 cd"命令變更資料夾,直到您在 ConfigSQLPorts.bat 檔案會儲存在相同的資料夾中。比方說如果 ConfigSQLPorts.bat 檔案儲存在 C:\Myfiles,您會對其進行在命令提示字元下輸入 CD myfiles,然後按下 ENTER。這樣會 C:\Myfiles 變更您的資料夾。
  3. 執行 ConfigSQLPorts.bat 指令碼在命令提示字元下鍵入 ConfigSQLPorts.bat 然後再按 ENTER 鍵。




您可以使用開啟只 TCP/IP 連接埠的指令碼

本章節所討論的指令碼會將 Windows 設定防火牆以允許 SQL Server 只接聽 TCP/IP。

若要建立指令碼,請依照下列步驟執行:
  1. 啟動 [記事本]。
  2. 複製並貼入 [記事本] 中的下列程式碼:

    echo off
    setlocal
    
    if "%1"=="-port" goto HandleTcp
    
    rem Usage
    :Usage
    
    echo "Usage: setupSqlServerPort -port [portnum] -[enable | disable] [ALL | SUBNET]"
    echo -port : Specifies the port to be enabled or disabled. Port is not optional.
    echo -enable: Enables a port
    echo -enable ALL:  enables access for ALL
    echo -enable SUBNET:  enables access for SUBNET
    echo -disable: Disables a port
    echo  one of -enable or -disable must be specified
    echo  the default scope is SUBNET only
    
    goto Exit
    
    :HandleTcp
    if "%2"=="" goto Usage
    if "%3"=="-enable" goto EnableTcp
    if "%3"=="-disable" goto DisableTcp
    goto Usage
    
    
    :EnableTcp
    set SCOPE="%4"
    if "%4"=="ALL" echo "Enabling SQLServer tcp access for port %2 ALL access" 
    if "%4"=="SUBNET" echo "Enabling SQLServer tcp access for port %2 subnet only access"
    if "%4"=="" set SCOPE="SUBNET"
    
    netsh firewall set portopening tcp %2 SQL_PORT_%2 ENABLE %SCOPE%
    goto Exit
    
    :DisableTcp
    echo Disabling SQLServer tcp access for port %2"
    netsh firewall set portopening tcp %2 SQL_PORT_%2 disable 
    goto Exit
    
    :Exit
    endlocal
    
    
  3. 將檔案儲存成.txt 檔案,做為檔案名稱 SetupSqlServerPort.txt。
  4. SetupSqlServerPort.txt 檔案重新命名為 SetupSqlServerPort.bat。


您在執行 SetupSqlServerPort.bat 指令碼時必須使用指令碼會儲存在該電腦。若要執行指令碼,請依照下列步驟執行:
  1. 按一下 [開始],再按一下 [執行]、 輸入 cmd,] 然後再按一下 [確定]
  2. 在 [命令] 視窗中使用 cd"命令變更資料夾,直到您在 SetupSqlServerPort.bat 檔案會儲存在相同的資料夾中。比方說如果 SetupSqlServerPort.bat 檔案儲存在 C:\Myfiles,您會對其進行在命令提示字元下輸入 CD myfiles,然後按下 ENTER。這樣會 C:\Myfiles 變更您的資料夾。
  3. 若要執行 SetupSqlServerPort.bat 指令碼,在命令提示字元鍵入 setupSqlServerPort.bat,並按下 ENTER。


?考

如其他有關設定 SQL Server 2000 和 Windows XP Service Pack 2,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
841249如何使用的 SQL Server 設定 Windows XP 服務套件 2 (S)

屬性

文章編號: 839980 - 上次校閱: 2006年1月11日 - 版次: 3.5
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server, Desktop Edition
  • Microsoft Windows XP Embedded
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbmt kbfirewall kbinfo KB839980 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:839980
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com