2015-11-04 81 views
1

我正在開發一個C#控制檯應用程序,該應用程序使用Visual Studio Pro 2013連接到遠程SQL Server,以.NET 4.0(即將爲4.5)爲目標。 SQL Server連接字符串在構造函數中定義。SqlConnection.open掛起

我曾嘗試使用下面的代碼,用於工作得很好,但在過去的一週,開始在下列方式行事:

如果我重新編譯我的代碼中,.Open()呼叫掛起。如果我停止應用程序並重新啓動它,它就會起作用!每次!

如何調試什麼是掛?如果我阻止並重新運行它,我可以運行20次而不會掛起。但是如果我重新編譯並運行,它會掛起。然後停下來重新運轉......就像一個魅力。我很困惑:)

public static DataTable GetDataTableSql(string SqlCommand) 
{ 
     DataSet _data = new DataSet(); 

     try 
     { 
      using (SqlConnection _connection = new SqlConnection(s_connectionString)) 
      { 
       if (_connection.State != ConnectionState.Open) 
       { 
        _connection.Open(); 
       } 
     } 
    } 
} 

任何指針將不勝感激!

-Ed

UPDATE:我能夠從.Open()呼叫恢復的錯誤消息:

GetDataTableSQL failed: Select * from tblSettings, 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)

注意,這總是立即發生後重新編譯,如果我停止和重新啓動沒有錯誤IT?!?!?!?

UPDATE:連接字符串:

Data Source=X.X.X.X ;Initial Catalog=Catalog1;Persist Security Info=True;Connect Timeout=300;User ID=UserID;Password=Password1; 
+0

Sans host,dbname,username和password ..你能告訴我們連接字符串嗎? –

+0

連接到相同數據源的其他客戶端應用程序遇到相同的延遲嗎?有可能您的問題與服務器有關,也可能是主機名的DNS解析問題? –

+4

附註:使用新的連接,你不需要檢查狀態,只需打開它。 – LarsTech

回答

0

我通過關閉Microsoft SQL Server管理工作室解決我的問題。 控制檯應用程序就像一個魅力。

唉!

-Ed

+0

好吧,它現在可能工作,但你還沒有找到真正的原因呢。這個問題可能會再次發生。它看起來是固定的,但根據經驗我可以說這不應該修復它。 – usr

+0

:(我討厭不可重複的問題... –