許多初學者在使用SQL Server時都會遇到使用SQL Server Management Studio無法連接遠端資料庫實例的問題,大致的錯誤描述如下:

An error has occurred while establishing a connection to the server.

(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 5)

An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server) (Microsoft SQL Server, Error: 1326)

意思是說不能在資料庫之間建立一個連接,原因是具名管道提供者出現錯誤。其實這是一個比較典型的資料庫伺服器設置問題,在局域網或廣域網路中都可能會遇到,我們只需要對資料庫伺服器進行一些配置便可以解決這個問題,來看看具體的步驟。

 

確保伺服器端資料庫服務已經啟動
開始->所有程式->Microsoft SQL Server 2008->Configutation Tools,打開SQL Server Configuration Manager,點擊SQL Server Services,查看資料庫服務是否已經啟動,如果服務未開啟,手動啟動它。當然,你還可以通過點擊Windows中的開始->控制台->管理者工具->服務,來查看相應的資料庫服務是否啟動。或者如果伺服器和你的機器在同一網路,你還可以通過命令「sqlcmd -L」(注意L要大寫)去查看該網路內所有可用的SQL Server伺服器。

103A24507-0  

 

在SQL Server Configuration中啟用TCP/IP
多個SQL Server伺服器之間通過網路相互通信是需要TCP/IP支援的,為使SQL Server伺服器能被遠端連線必須確保TCP/IP已經啟用。按照前面介紹的步驟打開SQL Server Configuration Manager,然後打開SQL Server Network Configuration,選擇你要設置的資料庫,然後點擊TCP/IP,右鍵啟用。如果有必要,你還可以啟用Named Pipes。記住,所有的修改都必須在重啟SQL Server服務之後才能生效!

103A25093-1  

 

在Windows防火牆中打開SQL Server的埠號
很多時候我們在對資料庫伺服器本身做了很多次設置後仍然無法成功建立遠端連線,這時就要考慮是否是防火牆在作怪。預設情況下,許多埠號和服務都會被防火牆所禁止而不能遠端存取或執行,SQL Server預設的埠號也不例外。我們應該重新設置Windows防火牆給SQL Server添加例外。除非人為修改,預設情況下SQL Server的埠號是1433,將該埠號添加到Windows防火牆中。如果SQL Server存在命名實例,那麼也應該將SQL Server browser添加到Windows防火牆中。(有關SQL Server的命名實例將在後面介紹)
打開Windows控制台,選擇Windows防火牆->Change Settings->Exceptions->Add Port


103A24096-2  

103A2A29-3  
 

 

 

點擊Add port...在彈出的對話方塊中填入:
Name: SQL
Port Number: 1433
Protocol: Select TCP

103A21P3-4  
103A260Z-5  



 

在SQL Server管理器中啟用遠端連線
這一步通常會被資料庫管理員忽略,如果未啟用資料庫遠端連線,資料庫實例只允許在本地進行連接而不能被遠端連線,啟用遠端連線同樣非常重要。預設設置中遠端連線是被禁止的。如下圖,打開SQL Server Management Studio,右鍵點擊資料庫實例然後選擇屬性功能表。

 103A22331-6
 

在打開的視窗中,左側選擇Connections,然後勾選"Allow remote connections to this server"。

103A220K-7  

 

啟用SQL Server Browser服務
如果SQL Server在安裝時不是用的預設實例名而是自訂的實例名,並且沒有配置特定的TCP/IP埠號,那麼按照我們前面的描述SQL Server仍然不能支援遠端連線。但如果你啟用的SQL Server Browser服務,便可以通過動態TCP/IP埠號進行遠端SQL Server連接。啟用SQL Server Browser服務非常簡單,與啟用SQL Server類似,在SQL Server Configuration Manager中右鍵點擊SQL Server Browser,然後選擇啟用。啟用該服務將會影響到伺服器上所有已安裝的SQL Server實例。


103A22541-8  
 

在防火牆中為sqlbrowser.exe應用程式創建例外
我們在前面已經提到了,自訂命名的SQL Server實例要支援遠端連線需要啟用sqlbrowser服務,Windows防火牆可能會阻止該服務執行。因此,我們必須在Windows防火牆中給sqlbrowser服務添加例外。
首先找到伺服器上安裝sqlbrowser.exe程式的路徑,如C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe。如果不確定SQL Server安裝在什麼地方,你可以在Windows搜索一下檔案名。與我們在前面介紹的在防火牆中添加SQL TCP/IP埠號的方法類似,給sqlbrowser.exe應用程式添加防火牆例外。

 

重新創建資料庫別名
創建SQL Server別名並在應用程式中使用它很常見。使用資料庫別名可以確保一旦資料庫的位置發生了變化,如更換了新的伺服器,IP位址發生了變化等,應用程式中的資料庫連接字串不用修改。否則你更換了資料庫的位置,你還要通知所有使用該資料庫的應用程式修改原始程式碼或設定檔中的連接字串,這恐怕是不可能的。所以,使用資料庫別名來配置連接字串是一個非常明智的選擇。另外,你還可以使用相同的別名來指向不同的資料庫實例,當修改別名參數時,可以馬上實現資料庫之間的切換。創建資料庫別名非常簡單,在SQL Server Configuration Manager中選擇Aliases進行創建。
103A23S8-9  
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()