2010-08-31 128 views
5

我在連接到我的數據庫服務器時遇到問題。數據庫服務器不是本地的,我通過它的IP地址連接。無法打開與SQL Server的連接

它在我的開發機器中正常工作。將網站發佈到我的服務器後,它無法連接到我的數據庫服務器。

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

爲什麼我的發佈服務器不能連接到數據庫服務器,而通過開發機器可以正常工作嗎?

回答

1

我會嘗試去兩個用於兩個在今天的心理調試...

我會假設你不使用集成的安全性?如果是這樣,它可能會解釋一些事情,因爲本地計算機上的帳戶可能具有權限,但服務器上運行的SYSTEM帳戶不具有權限。儘管在黑暗中只有一槍。

+1

您的圖片讓你看起來像有一個很好的機會,你的精神。 – 2010-08-31 18:36:15

+0

我改變了這添加到connectionstrng 集成安全= SSPI; 並沒有工作 – nezdet 2010-08-31 18:41:47

+0

@nezdet:您的更改實際上明確添加了Windows身份驗證。如果是Josh建議的問題,您將遇到的問題會持續存在,除非您將運行Web服務器的憑據更改爲具有數據庫訪問權限的集合(例如,您自己的,儘管您應該始終嘗試使用服務帳戶爲web服務器 – 2010-08-31 18:50:21

1

這聽起來像你的服務器不能建立網絡連接,而不是安全問題。

  • 確保數據庫和應用服務器上的任何防火牆都允許端口上的流量(1433)。
  • 確保您能夠從兩臺計算機ping或tracert。
+0

pinging工程從這兩個服務器, 我關閉了發佈服務器上的防火牆, – nezdet 2010-08-31 19:54:01

4

我經常遇到這個問題。主要是因爲兩個問題。

  1. 打開SQL Server配置管理器。

    • 檢查SQL Server網絡配置是否支持TCP/IP,如果禁用,啓用它。 例如SqlServer的2005網絡配置,協議SQLEXPRESS
  2. 打開SQL Server Management Studio中

    • 單擊SQL Server屬性(右鍵單擊服務器名稱和 選擇屬性)。
    • 之後,選擇頁面「安全」,並將檢查切換到「SQL Server和Windows身份驗證模式」。

就這樣。

+0

這已完成: -TCP/IP已啓用 - 以及SQL Server和「Windows Aut hentication模式「也被檢查, – nezdet 2010-08-31 20:03:02

+0

從我的客戶端連接工作正常,但現在從服務器。我不知道爲什麼 – nezdet 2010-08-31 20:03:52

+0

也許在服務器上,客戶端協議不允許TCP/IP。你也可以在SQL Server配置管理器上檢查你的服務器。所以你只需要尋找「SQL本機客戶端配置/客戶端協議」 – BitKFu 2010-08-31 20:47:25

0

這是您第一次在Web服務器上發佈您的網站嗎?如果是這樣,你確定你已經正確設置了連接字符串嗎?

您需要在Web服務器上創建一個登錄名(同樣也是一個口令密碼)以及該SQL的IP地址。

所以你需要sql server主機的IP地址,Database Name,UId,Pwd。

+0

它不是第一次,我有一些其他應用程序在本地連接到數據庫,這個應用程序連接到一個不在本地的服務器, – nezdet 2010-08-31 20:12:11

0

我會同意這聽起來像是網絡問題,而不是安全問題。

遠程登錄到Web服務器並通過IP地址ping數據庫服務器。如果這不起作用,您的服務器無法通過該地址(不同子網,不正確的防火牆/代理設置等)查看數據庫服務器。您可能需要使用代理地址才能從Web服務器訪問數據庫服務器,或者您的Web服務器也可能是網關,並且IIS不知道要在LAN上查找數據庫服務器。如果確實有效,計算機可能不會在同一個端口上通話,或者防火牆可能會阻止該端口退出Web服務器。

0

我花了數小時試圖使用sqlcmd連接到SQL服務器。我禁用了我的防火牆,檢查了「Protocols for SQLEXPRESS」中列出的所有IP,編輯了我的主機文件。我嘗試使用不同的ips和machinename連接到服務器。但沒有任何工作成功。經過幾個小時的調查,我發現我犯了絕對愚蠢的錯誤,導致我無法連接。 我想提醒人們連接字符串不區分大小寫。但是選項是! 我所做的是我把

sqlcmd -s .\sqlserver

但正確的字符串是

sqlcmd -S .\sqlserver so watch out, people