SqlConnection.open挂起

时间:2015-11-04 17:15:55

标签: c# sql-server sqlconnection

我正在使用Visual Studio Pro 2013开发一个针对.NET 4.0(即将为4.5)的C#控制台应用程序,连接到远程SQL Server。 SQL Server连接字符串在构造函数中定义。

我使用了以下代码,这些代码过去完美无缺,但在上周,开始按以下方式执行:

如果我重新编译代码,.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

更新:我能够从.Open()电话中恢复错误消息:

  

GetDataTableSQL失败:从tblSettings中选择*,在建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)

请注意,如果我停止并重新启动它,这种情况会立即发生并且没有错误吗?!?!?!?

更新:连接字符串:

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

2 个答案:

答案 0 :(得分:0)

我通过关闭Microsoft SQL Server管理工作室解决了我的问题。 控制台应用程序就像一个魅力。

哎呀!

-Ed

答案 1 :(得分:0)

_Connection.Close()中添加finally。整个过程应该是 尝试:

catch

finally 
_Connection.Close();