我正在使用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;
答案 0 :(得分:0)
我通过关闭Microsoft SQL Server管理工作室解决了我的问题。 控制台应用程序就像一个魅力。
哎呀!
-Ed
答案 1 :(得分:0)
在_Connection.Close()
中添加finally
。整个过程应该是
尝试:
catch
finally
_Connection.Close();