2014-10-03 85 views
0

我在嘗試登錄asp.net應用程序時遇到以下錯誤。錯誤:40 - 無法打開與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)

在我web.config文件,連接字符串就像

<add name="DefaultConnection" 
    connectionString="Server=1.1.1.1; Database=XYZ; Uid=user; Pwd=pswd;" 
    providerName="System.Data.SqlClient" /> 

Web和數據庫服務器是分開的。同一個Web服務器上的其他網站指向同一個數據庫服務器上的不同數據庫,工作正常。

當我雙擊用戶名在SQL Server 2008 R2(安全 - >用戶 - >用戶),我收到以下錯誤:

enter image description here

我已經檢查SQL Server服務,他們正在運行精細。只是想知道在SQL Server中是否有與這個用戶有關的事情。

+0

看上去就像是*非常*不對的用戶記錄... – 2014-10-03 11:55:03

+1

創建一個新用戶來測試。如果它有效,那麼你知道問題在於那個用戶。 – CathalMF 2014-10-03 11:55:56

回答

0

此錯誤與用戶相關。檢查以確保通過SQL Server配置管理器實用程序在SQL Server上啓用遠程連接,並在防火牆上打開端口1433。您可以使用TELNET或下面的Powershell命令測試端口連接。

1433 | % { echo ((new-object Net.Sockets.TcpClient).Connect("YourServerName",$_)) "server listening on TCP port $_" } 
+0

得到這個消息「服務器偵聽端口1433」 – user1263981 2014-10-03 13:09:07

+0

@ user1263981,你爲什麼在連接字符串中有端口3306?您是否試圖連接到同一臺服務器上的單獨命名實例,而不是正在運行的默認命令實例?如果從連接字符串中刪除端口號,我希望連接工作。 – 2014-10-03 13:33:18

+0

我從來沒有提到過關於3306 – user1263981 2014-10-03 14:13:02

0

命名管道協議(見錯誤)只適用於同一臺機器上的連接,這意味着(可能)是SQL Server上未啓用外部通信TCP/IP協議

錯誤的另一個可能的原因是sql server的名爲實例的;在你的連接字符串你把沒有實例名稱的服務器的IP地址(最好使用機器名稱並把IP放在DNS或主機文件中),這意味着你的SQL服務器沒有命名實例是正確的?用於檢查命名實例在服務上查看。

其他可能的問題可能:

  • 防火牆(服務器和客戶端上),
  • 的SQL Server偵聽端口。
  • 試圖連接到SQL Server(錯誤的密碼,禁用,對DB和/或SQL實例沒有權限)
0

我有同樣的問題,由於某種原因,我不得不添加標準用戶SQL端口(1433),然後一切正常。你的情況,這將是:

<add name="DefaultConnection" 
connectionString="Server=1.1.1.1,1433; Database=XYZ; Uid=user; Pwd=pswd;" 
providerName="System.Data.SqlClient" /> 
相關問題