SQL超时已过期2秒查询

Joh*_*ker 7 sql sql-server asp.net stored-procedures

问题是我有一个存储过程在Sql Server Management Server中以2秒的时间一致地运行,但是当从代码调用相同的存储过程时它会超时.

当它从SSMS正确运行时,它应该返回大约30行.

我尝试了几种不同的方法从代码调用过程,但每次都有相同的结果.这刚刚开始发生,昨天它工作正常.

为我们调用该过程的首选方法是使用Linq2Sql,它给出以下错误消息:

超时已过期.操作完成之前经过的超时时间或服务器没有响应.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Data.SqlClient.SqlException:超时已过期.操作完成之前经过的超时时间或服务器没有响应.

来源错误:

Line 16:         public IMultipleResults GetTournamentRatingNonComplaintData([global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "DateTime")] System.Nullable<System.DateTime> startdate, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "DateTime")] System.Nullable<System.DateTime> enddate, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> officialSportID, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Char(1)")] System.Nullable<char> gender, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType = "Int")] System.Nullable<int> level)
Line 17:         {
Line 18:             IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), startdate, enddate, officialSportID, gender, level);
Line 19:             return ((IMultipleResults)(result.ReturnValue));
Line 20:         }
Run Code Online (Sandbox Code Playgroud)

有谁知道在SSMS中运行它和通过代码之间有什么区别?如何解决此问题可以做些什么?

Joe*_*Joe 6

您从SQL Management Studio的连接可能与您在.NET中使用的连接字符串的配置不同.

例如,请参阅SQL Management Studio工具/选项/查询执行/ SQL Server/Advanced中默认设置的选项.

我怀疑这两种环境之间的某些设置不同会导致您的问题.要进行调试,您应该尝试将SQL Server Management Studio配置为在运行SP之前使用与.NET连接字符串相同的配置.

或者,将SET语句添加到.NET查询中以配置您在Management Studio中配置的所有选项.

找到不同的设置并不总是很容易 - 根据我的经验,常见的原因是不同的ANSI设置.