SQL Server 出現(xiàn)Error: 1326錯誤
我們在在使用SQL Server時都會遇到使用SQL Server Management Studio無法連接遠(yuǎn)程數(shù)據(jù)庫實(shí)例的問題,錯誤描述信息摘錄如下:
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)
上面這段英文的翻譯后大概是說:不能在數(shù)據(jù)庫之間建立一個連接,原因是命名管道提供者出現(xiàn)錯誤。其實(shí)這是一個比較典型的數(shù)據(jù)庫服務(wù)器設(shè)置問題,在局域網(wǎng)或廣域網(wǎng)中都可能會遇到,我們只需要對數(shù)據(jù)庫服務(wù)器進(jìn)行一些配置便可以解決這個問題,來看看具體的步驟。
第一步:確保服務(wù)器端數(shù)據(jù)庫服務(wù)已經(jīng)啟動
開始->所有程序->Microsoft SQL Server 2008->Configutation Tools,打開SQL Server Configuration Manager,點(diǎn)擊SQL Server Services,查看數(shù)據(jù)庫服務(wù)是否已經(jīng)啟動,如果服務(wù)未開啟,手動啟動它。當(dāng)然,你還可以通過點(diǎn)擊Windows中的開始->控制面板->管理者工具->服務(wù),來查看相應(yīng)的數(shù)據(jù)庫服務(wù)是否啟動?;蛘呷绻?wù)器和你的機(jī)器在同一網(wǎng)絡(luò),你還可以通過命令“sqlcmd -L”(注意L要大寫)去查看該網(wǎng)絡(luò)內(nèi)所有可用的SQL Server服務(wù)器。
第二步:在SQL Server Configuration中啟用TCP/IP
多個SQL Server服務(wù)器之間通過網(wǎng)絡(luò)相互通信是需要TCP/IP支持的,為使SQL Server服務(wù)器能被遠(yuǎn)程連接必須確保TCP/IP已經(jīng)啟用。按照前面介紹的步驟打開SQL Server Configuration Manager,然后打開SQL Server Network Configuration,選擇你要設(shè)置的數(shù)據(jù)庫,然后點(diǎn)擊TCP/IP,右鍵啟用。如果有必要,你還可以啟用Named Pipes。記住,所有的修改都必須在重啟SQL Server服務(wù)之后才能生效!
第三步:在Windows防火墻中打開SQL Server的端口號
很多時候我們在對數(shù)據(jù)庫服務(wù)器本身做了很多次設(shè)置后仍然無法成功建立遠(yuǎn)程連接,這時就要考慮是否是防火墻在作怪。默認(rèn)情況下,許多端口號和服務(wù)都會被防火墻所禁止而不能遠(yuǎn)程訪問或執(zhí)行,SQL Server默認(rèn)的端口號也不例外。我們應(yīng)該重新設(shè)置Windows防火墻給SQL Server添加例外。除非人為修改,默認(rèn)情況下SQL Server的端口號是1433,將該端口號添加到Windows防火墻中。如果SQL Server存在命名實(shí)例,那么也應(yīng)該將SQL Server browser添加到Windows防火墻中。(有關(guān)SQL Server的命名實(shí)例將在后面介紹)
打開Windows控制面板,選擇Windows防火墻->Change Settings->Exceptions->Add Port
點(diǎn)擊Add port...在彈出的對話框中填入:
Name: SQL
Port Number: 1433
Protocol: Select TCP
第四步:在SQL Server管理器中啟用遠(yuǎn)程連接
這一步通常會被數(shù)據(jù)庫管理員忽略,如果未啟用數(shù)據(jù)庫遠(yuǎn)程連接,數(shù)據(jù)庫實(shí)例只允許在本地進(jìn)行連接而不能被遠(yuǎn)程連接,啟用遠(yuǎn)程連接同樣非常重要。默認(rèn)設(shè)置中遠(yuǎn)程連接是被禁止的。如下圖,打開SQL Server Management Studio,右鍵點(diǎn)擊數(shù)據(jù)庫實(shí)例然后選擇屬性菜單。
在打開的窗口中,左側(cè)選擇Connections,然后勾選"Allow remote connections to this server"。
第五步:啟用SQL Server Browser服務(wù)
如果SQL Server在安裝時不是用的默認(rèn)實(shí)例名而是自定義的實(shí)例名,并且沒有配置特定的TCP/IP端口號,那么按照我們前面的描述SQL Server仍然不能支持遠(yuǎn)程連接。但如果你啟用的SQL Server Browser服務(wù),便可以通過動態(tài)TCP/IP端口號進(jìn)行遠(yuǎn)程SQL Server連接。啟用SQL Server Browser服務(wù)非常簡單,與啟用SQL Server類似,在SQL Server Configuration Manager中右鍵點(diǎn)擊SQL Server Browser,然后選擇啟用。啟用該服務(wù)將會影響到服務(wù)器上所有已安裝的SQL Server實(shí)例。
第六步:在防火墻中為sqlbrowser.exe應(yīng)用程序創(chuàng)建例外
我們在前面已經(jīng)提到了,自定義命名的SQL Server實(shí)例要支持遠(yuǎn)程連接需要啟用sqlbrowser服務(wù),Windows防火墻可能會阻止該服務(wù)執(zhí)行。因此,我們必須在Windows防火墻中給sqlbrowser服務(wù)添加例外。
首先找到服務(wù)器上安裝sqlbrowser.exe程序的路徑,如C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe。如果不確定SQL Server安裝在什么地方,你可以在Windows搜索一下文件名。與我們在前面介紹的在防火墻中添加SQL TCP/IP端口號的方法類似,給sqlbrowser.exe應(yīng)用程序添加防火墻例外。
最后:重新創(chuàng)建數(shù)據(jù)庫別名
創(chuàng)建SQL Server別名并在應(yīng)用程序中使用它很常見。使用數(shù)據(jù)庫別名可以確保一旦數(shù)據(jù)庫的位置發(fā)生了變化,如更換了新的服務(wù)器,IP地址發(fā)生了變化等,應(yīng)用程序中的數(shù)據(jù)庫連接字符串不用修改。否則你更換了數(shù)據(jù)庫的位置,你還要通知所有使用該數(shù)據(jù)庫的應(yīng)用程序修改源代碼或配置文件中的連接字符串,這恐怕是不可能的。所以,使用數(shù)據(jù)庫別名來配置連接字符串是一個非常明智的選擇。另外,你還可以使用相同的別名來指向不同的數(shù)據(jù)庫實(shí)例,當(dāng)修改別名參數(shù)時,可以馬上實(shí)現(xiàn)數(shù)據(jù)庫之間的切換。創(chuàng)建數(shù)據(jù)庫別名非常簡單,在SQL Server Configuration Manager中選擇Aliases進(jìn)行創(chuàng)建。
自己補(bǔ)充:sqlservr.exe是服務(wù)PID是1760,占用端口號是1433,檢查該端口是否占用,可以用telnet localhost 1433去查看,還可以通過netstat IP | find "1433'去具體誰占用了??偨Y(jié):1.一看用戶名、密碼;2二看是否設(shè)置允許遠(yuǎn)程連接;3三看防火墻是否把1433保護(hù)了(不知道的話可以直接關(guān)閉防火墻試試)
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章:- SQL server 2005將遠(yuǎn)程數(shù)據(jù)庫導(dǎo)入到本地的方法
- SQLSERVER 本地查詢更新操作遠(yuǎn)程數(shù)據(jù)庫的代碼
- SQL Server實(shí)時同步更新遠(yuǎn)程數(shù)據(jù)庫遇到的問題小結(jié)