現在的伺服器 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 的連接埠,該怎麼做呢?!請依照下列步驟執行:
- 啟動 [記事本]。
- 將複製並貼到 「 記事本 」 的下列程式碼:
@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
- 使用下列的名稱儲存成.txt 檔案檔案: OpenSqlServerPort.txt
- OpenSqlServerPort.txt 檔案重新命名為下列: OpenSqlServerPort.bat
執行 OpenSqlServerPort.bat 指令碼之前,必須將指令碼複製到電腦的防火牆,然後在該電腦上執行指令碼。 如果要執行指令碼,請依照下列步驟執行: