在操作完成之前经过的超时时间,或者即使连接超时= 0,服务器也没有响应
本文关键字:超时 连接 服务器 响应 或者 经过 时间 操作 | 更新日期: 2023-09-27 18:16:05
我有一个查询,必须做一个开放的行集到远程服务器(通过卫星)我把我的时间设置为0,"是的,我知道不应该这样做。"我在SSMS中运行我的查询,它可以从3分钟到1.5小时返回任何地方。"是的,我知道"但事实就是如此。我做了所有的sql后端优化…执行计划……
所以我在SSMS中运行一个查询需要5分钟。没问题,但当我在应用程序中运行它以填充我的DS时,我得到"超时时间.......",即使我的连接超时设置为0
string connString = ("server = " + _SourceVal + "; user id = myid;
password = mypw; database = mydb;Connection Timeout=0");
所以在我的代码中加入一个时间检查,它只运行34-35秒,然后就会掉入异常
Console.WriteLine (DateTime。Now + "Start");
try
{
conn.Open();
da.Fill(ds);
conn.Close();
}
catch (Exception e)
{
Console.WriteLine(DateTime.Now + "end");
MessageBox.Show("error with the findingMisMatch " + e.Message);
}
return ds;
结果11/2/2016 2:34:00 PMStart线程"(0x1944)"已退出,代码为0 (0x0)。类型为"System.Data.SqlClient"的第一次机会异常。在System.Data.dll中发生SqlException'11/2/2016 2:34:35
您必须增加CommandTimeout,默认为30秒。在你的例子中,你可以设置为0表示无限。
以下是来自MSDN的示例:[https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout(v=vs.110).aspx]
using System;
using System.Data.SqlClient;
///
public class A {
///
public static void Main() {
string connectionString = "";
// Wait for 5 second delay in the command
string queryString = "waitfor delay '00:00:05'";
using (SqlConnection connection = new SqlConnection(connectionString)) {
connection.Open();
SqlCommand command = new SqlCommand(queryString, connection);
// Setting command timeout to 1 second
command.CommandTimeout = 1;
try {
command.ExecuteNonQuery();
}
catch (SqlException e) {
Console.WriteLine("Got expected SqlException due to command timeout ");
Console.WriteLine(e);
}
}
}
}