2011-06-14 70 views
4

我們已經開始上來了,在過去一個月左右的時間,從而以MSSQL服務器的一些連接失敗,出現錯誤一個很奇怪的間歇性問題:間歇SQL異常 - 與網絡相關的或特定於實例的錯誤

System.Data.SqlClient.SqlException: 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. 資源相關的問題 - 所以我就開始運行SQL事件探查器和性能監視器,但沒有發現與發球奮力任何問題跟上連接數/秒。我一直在尋找MSSQL:SQL錯誤,MSSQL:等待統計,MSSQL:執行統計,MSSQL:鎖。有沒有人有任何指導我應該在這裏戳和刺激其他統計數據?

  2. 未封閉的數據庫連接 - 我在完成所有數據層代碼後排除了這一點。我們有所有的故障保險箱來阻止這種情況的發生。

  3. 連接/網絡相關問題:我們的SQL服務器位於我們的應用程序服務器(在IIS7上運行ASP.Net)的單獨服務器上(MS SQL Server Standard 2008) - 兩臺服務器都在具有所有安全性的xlarge Amazon EC2實例上運行配置策略(按照亞馬遜方向)。任何人都可以獲得關於如何測試兩臺服務器之間的連接性的指導,或者如果這可能是問題?

  4. 這是IIS連接字符串可能的問題嗎?我沒有測試過這個,但是我們應該用我們連接到的計算機名稱來完全限定服務器(只是想到了它)?我們使用以下格式的連接字符串:server=xxxxx;Database=xxxx;uid=xxxx;password=xxx;

您的想法和見解非常感謝!提前

回答

3

已解決。在測試幾乎所有可能的性能指標並檢查每一段代碼之後,我發現錯誤是由於一些不贊成使用的數據庫代碼造成的。主要的問題是由代碼中使用所引起:

SqlConnection.ClearPools; 

以供將來參考,任何其他開發人員希望調試他們的代碼,並管理連接池,一個優秀的資源可以在這裏找到:http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx

+5

您可以詳細說明嗎?究竟是什麼問題,你到底是如何解決它的? – 2013-06-16 16:17:58

0

由於它可能如果可以的話,切換到TCP/IP而不是命名管道來解決。 也許您可以通過將服務器名稱更改爲服務器IP地址來進行測試。

我在我的連接字符串中使用server = tcp:servername來強制TCP。 KB313295

2

看起來好像連接沒有被正確關閉,並且在一段時間之後,您不能再打開任何更多的新連接。由於數據庫允許的總連接數是一個常數。

如果您正在使用C#/ VB.net

是否使用 「使用」 語句,打開連接?

using (System.Data.SqlClient.SqlConnection con = new SqlConnection("YourConnection string")) 
{ 
    con.Open(); 
} 
+1

感謝您的建議 - 但正如我所說的,我在完成所有數據層代碼後排除了這一點。我們有所有的故障保險箱來阻止這種情況的發生。也就是說,我們已經使用了陳述 – StacMan 2011-06-14 23:31:34

3

嘗試改變連接字符串FQDN +端口

server=xxxxx.domain.tld,1234; 

注:如果您使用的端口

我們的全球企業內部網,你不需要任何實例名...我們遇到了類似的問題,發生在遠程客戶端:更多的時候,如果他們離得更遠,絕不會與服務器位於同一棟樓。

經過一番討論後,與DBA和MS聊天,據說這是由定時/ Kerberos /太多防火牆等引起的。添加FQDN +端口刪除了我們所有的問題。

相關問題