C# Sql server没有响应,timeoutexpired

C# Sql server没有响应,timeoutexpired,c#,sql-server,sql-server-2008-r2,C#,Sql Server,Sql Server 2008 R2,我正在使用mobile将行插入本地sqlserver。 有时sql server没有响应,我被迫等待获取异常 我已将sqlConnetion超时设置为3秒 SqlConnection con = new SqlConnection("Data Source = " + MyIp + "; Initial Catalog = database; user id = sa; password = 1234;Connection Timeout=3"); 问题是有时候我需要等30秒。 据我所知,这

我正在使用mobile将行插入本地sqlserver。 有时sql server没有响应,我被迫等待获取异常

我已将sqlConnetion超时设置为3秒

 SqlConnection con = new SqlConnection("Data Source = " + MyIp + "; Initial Catalog = database; user id = sa; password = 1234;Connection Timeout=3");
问题是有时候我需要等30秒。 据我所知,这次是cmd execute timeout

con.Open();
SqlCommand cmd = new SqlCommand("Insert into customers(Name) values(name123)",con);
cmd.ExecuteNonQuery();
con.Close();
所以第一个问题Sql连接超时不包括这两个问题

第二个问题如果sql没有响应,为什么我不能在3秒内得到第一个异常


最后一个问题,为什么sql server有时不通过网络响应?
移动设备和服务器之间是否存在较大的网络(流量)延迟?

您在SqlConnection上定义的超时仅应用于连接。它不会影响任何命令

您可以通过执行以下操作来更改命令的超时

cmd.CommandTimeout = 30;

不幸的是,我不能帮你回答最后一个问题。

这里是一个整体,可能有人会提供更详细的信息,但实际上,你设置的超时只是存在于不同层的众多超时设置之一。其中一些层位于SQL server端,一些层位于.Net framework端,一些层与实际连接中的用户集类似。找出哪个超时设置优先可能是一个挑战


但更重要的是,这项行动耗时如此之长。您提供的内容应该足够快,以至于这些都不应该成为问题。它不会变得比你正在尝试做的事情更简单,这几乎是瞬间完成的。我可以向您保证,它不是SQL server本身,除非您在该表中有几十亿条记录,每个列都被索引,即使这样,我也怀疑它是服务器花费所有时间在查询上的,并且必须是传输中的某个东西。仅凭所提供的信息,我们无法解决这一问题。

“为什么sql server有时不通过网络进行响应?”在StackOverflow的范围内,这并不是真正需要回答的问题。这是离题的,不可复制;最好的方法是通过一系列步骤来确定原因。这个问题可能会转到服务器故障我只是想知道在30秒内我的查询应该执行正确吗?这就是为什么我开始认为我的问题不是执行或sql server。网络上是否存在sql server错误(sql 2008 r2)?还是应该在ip地址之后设置端口?例192.xxx.xxx.xxx,1433。也许服务器出于某种原因阻止了我,只是想知道我的查询应该在30秒内执行,对吗绝对存在通过网络出现sql server错误(sql 2008 r2)的可能性吗?-在地狱里是不可能的,在十年前,数以百万计的开发者可能已经遇到了这种情况,sql server实际上运行着整个世界。或者我应该在ip地址->之后设置端口,这无关紧要。我希望我能给你更多的东西,但听起来像一些网络故障排除是为了。如果这是移动的,你测试的手机网络覆盖率如何?