轉自http://www.cnblogs.com/jaxu/archive/2010/11/23/1884411.html
html
許多初學者在使用SQL Server時都會遇到使用SQL Server Management Studio沒法鏈接遠程數據庫實例的問題,大體的錯誤描述以下:sql
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)網絡
意思是說不能在數據庫之間創建一個鏈接,緣由是命名管道提供者出現錯誤。其實這是一個比較典型的數據庫服務器設置問題,在局域網或廣域網中均可能會遇到,咱們只須要對數據庫服務器進行一些配置即可以解決這個問題,來看看具體的步驟。ide
確保服務器端數據庫服務已經啓動工具
開始->全部程序->Microsoft SQL Server 2008->Configutation Tools,打開SQL Server Configuration Manager,點擊SQL Server Services,查看數據庫服務是否已經啓動,若是服務未開啓,手動啓動它。固然,你還能夠經過點擊Windows中的開始->控制面板 ->管理者工具->服務,來查看相應的數據庫服務是否啓動。或者若是服務器和你的機器在同一網絡,你還能夠經過命令「sqlcmd -L」(注意L要大寫)去查看該網絡內全部可用的SQL Server服務器。this
在SQL Server Configuration中啓用TCP/IPspa
多個SQL Server服務器之間經過網絡相互通訊是須要TCP/IP支持的,爲使SQL Server服務器能被遠程鏈接必須確保TCP/IP已經啓用。按照前面介紹的步驟打開SQL Server Configuration Manager,而後打開SQL Server Network Configuration,選擇你要設置的數據庫,而後點擊TCP/IP,右鍵啓用。若是有必要,你還能夠啓用Named Pipes。記住,全部的修改都必須在重啓SQL Server服務以後才能生效!server
在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
點擊Add port...在彈出的對話框中填入:
Name: SQL
Port Number: 1433
Protocol: Select TCP
在SQL Server管理器中啓用遠程鏈接
這一步一般會被數據庫管理員忽略,若是未啓用數據庫遠程鏈接,數據庫實例只容許在本地進行鏈接而不能被遠程鏈接,啓用遠程鏈接一樣很是重要。 默認設置中遠程鏈接是被禁止的。以下圖,打開SQL Server Management Studio,右鍵點擊數據庫實例而後選擇屬性菜單。
在打開的窗口中,左側選擇Connections,而後勾選"Allow remote connections to this server"。
啓用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實例。
在防火牆中爲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進行建立。