(上圖是在網路上找的)在教學上我很喜歡使用SQL Server Express,因為它是免費的版本,我不用去擔心版權的問題。而在教學上資料庫的連線大概都是在單機上使用,不過最近在寫一些應用時有需要用到分散式的架構(例如預警資訊發送),所以就利用時間把SQL Server Express的遠端連線設定一下。

早期遠端連線SQL Server是很簡單的,有的甚至於不用設定就可以連上了,因為早期作業系統的防火牆限制沒那麼嚴格(或是根本沒有防火牆),在設定的概念上很單純,就是用到那個port就在防火牆上開那個port(例如MQTT的架設與測試中的作法),但是代誌不是憨人想的那麼簡單

打開遠端伺服器的防火牆設定,開啟port1433,按確定後,覺得搞定,準備快樂的遠端連資料庫,但是...但是...,它連~~~~不~~~~上~~~~

覺得很奇怪,怎麼會跟想像的不一樣,到遠端的伺服器上關閉防火牆,測試可以正確遠端連資料庫,開啟防火牆又再度無法遠端連資料庫,這表示只開port1433是沒辦法遠端連資料庫的。上網Google了一下,用了國內國外所找到的幾種解法都還是連不上,折騰了好幾天,啍,什麼Google根本就不可靠

最後終於找到正確的設定方式(不用特別去開啟port1433),一開始在未設定時由自己的機器會搜尋不到所需的遠端資料庫伺服器

在設定上,首先檢查遠端伺服器的SQL Server與SQL Server Brower有沒有啟動,否則就算設定正確也沒用

接下來檢查通訊協定有沒有啟用

接下來在sql Server服務中,確定Sql Server與Sql Server Brower的程式真實位置(後面的設定過程會用到),可以看一下二進位路徑


進到Windows防火牆的設定中,設定允許應用程式通過防火牆

先按變更設定,再按允許其他應用程式

根據在sql Server服務中,所看到Sql Server的程式真實位置設定,讓Sql Server可通過防火牆

根據在sql Server服務中,所看到Sql Server Brower的程式真實位置設定,讓Sql Server Brower可通過防火牆

此時在自己的機器重新整理,就可以看到遠端資料庫伺服器了

測試連接,連接成功

嘿嘿嘿,搞定了,我好棒棒!