2015-11-04 82 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

:(我讨厌不可重复的问题... –