現在的伺服器 CPU 等級都很高檔,原先公司規畫要做代收系統,所以我原先要請購了兩套伺服器,但是由於預算的問題,加上現在硬體等級又都可以應付,畢竟代收的資料筆數也不會多到資料庫無法負荷,所以就決定了,在 Windows Server 2008 上用 IIS 架 Web Server,然後利用 HyperV 架構架設虛擬主機,在虛擬主機上架上 SQL Server 2008,由於這個 SQL Server 2008 因為未來要給多套系統使用,所以還是用虛擬機器架伺服器區隔開的好。

但是問題來了,我用 ASP.NET 寫的 Web Applicatoin 局然連不到 HyperV 上的 SQL Server?! ,訊息是 SQL Server 不允許遠端連線。查了很久才查出原因,原來是因為Windows Server 2008 本身內建的防火牆會檔 SQL Server 的 1433 port。

見招拆招吧!為了要讓 Web Applicatoin 連到 HyperV 上的 SQL Server,就必須先把 HyperV 上的 防火牆開啟 SQL Server 的連接埠,該怎麼做呢?!請依照下列步驟執行:

  1. 啟動 [記事本]。
  2. 將複製並貼到 「 記事本 」 的下列程式碼:

    @echo =========  SQL Server Ports  ===================
    @echo Enabling SQLServer default instance port 1433
    netsh firewall set portopening TCP 1433 "SQLServer" 
    @echo Enabling Dedicated Admin Connection port 1434
    netsh firewall set portopening TCP 1434 "SQL Admin Connection" 
    @echo Enabling conventional SQL Server Service Broker port 4022  
    netsh firewall set portopening TCP 4022 "SQL Service Broker" 
    @echo Enabling Transact-SQL Debugger/RPC port 135 
    netsh firewall set portopening TCP 135 "SQL Debugger/RPC" 
    @echo =========  Analysis Services Ports  ==============
    @echo Enabling SSAS Default Instance port 2383
    netsh firewall set portopening TCP 2383 "Analysis Services" 
    @echo Enabling SQL Server Browser Service port 2382
    netsh firewall set portopening TCP 2382 "SQL Browser" 
    @echo =========  Misc Applications  ==============
    @echo Enabling HTTP port 80 
    netsh firewall set portopening TCP 80 "HTTP" 
    @echo Enabling SSL port 443
    netsh firewall set portopening TCP 443 "SSL" 
    @echo Enabling port for SQL Server Browser Service's 'Browse' Button
    netsh firewall set portopening UDP 1434 "SQL Browser" 
    @echo Allowing multicast broadcast response on UDP (Browser Service Enumerations OK)
    netsh firewall set multicastbroadcastresponse ENABLE 
    
  3. 使用下列的名稱儲存成.txt 檔案檔案: OpenSqlServerPort.txt
  4. OpenSqlServerPort.txt 檔案重新命名為下列: OpenSqlServerPort.bat



執行 OpenSqlServerPort.bat 指令碼之前,必須將指令碼複製到電腦的防火牆,然後在該電腦上執行指令碼。 如果要執行指令碼,請依照下列步驟執行:

  1. 按一下 [ 開始 ],按一下 [ 執行 ],輸入 cmd ,然後再按一下 [確定]
  2. 在命令提示字元下使用 [瀏覽到您要將 OpenSqlServerPort.bat 檔案儲存在資料夾的 [ cd 命令]。
  3. 執行 OpenSqlServerPort.bat 指令碼在命令提示字元下鍵入 OpenSqlServerPort.bat 然後再按 ENTER 鍵。

Zabo 測試結果,成功! Web Applicatoin 可以連到 HyperV 上的 SQL Server 了!

arrow
arrow
    全站熱搜

    Zabo 發表在 痞客邦 留言(1) 人氣()