加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server-2005 – 进程从ADO.NET中超时,但在SSMS中没有

发布时间:2021-02-24 23:17:29 所属栏目:编程 来源:网络整理
导读:我有一个存储进程给我一个SqlException,由于我从代码运行它时超时(超时配置为30).当我直接在Management Studio中运行该进程时,它会在1秒内执行.我也只在针对特定命据库运行时得到超时.当我行使其他数据库时,它可以快速完成而不会呈现错误.这是完备的错误动静

我有一个存储进程给我一个SqlException,由于我从代码运行它时超时(超时配置为30).当我直接在Management Studio中运行该进程时,它会在1秒内执行.我也只在针对特定命据库运行时得到超时.当我行使其他数据库时,它可以快速完成而不会呈现错误.这是完备的错误动静:

System.Data.SqlClient.SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,Boolean returnStream,Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,String method,DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)

这个仓库跟踪对任何人都意味着什么?看起来我的sproc也许已经完成了,而且在实行读取某种元数据时超时了?

我实行在运行进程中查察该历程并将其停息. sys.dm_os_waiting_tasks将守候范例表现为IO_COMPLETION,假若有任何用途的话.我在数据库中行使sp_who2’active’看到的独一历程是一次超时和我的勾当SSMS窗口,以是我不以为这是一个阻塞题目.我验证了这个数据库与事变数据库具有沟通的权限,并运行dbcc checkdb而没有任何错误.怎样确定超时的缘故起因?

办理要领

您可以将超时的会话的SET选项与不是的会话的SET选项举办较量:
SELECT
    session_id,[ansi_defaults],[ansi_null_dflt_on],[ansi_nulls],[ansi_padding],[ansi_warnings],[arithabort],[concat_null_yields_null],[deadlock_priority],[quoted_identifier],[transaction_isolation_level]
FROM
    sys.dm_exec_sessions
WHERE
    session_id IN (<spid1>,<spid2>);

当您发明一些差异的环境时,请实行将每个配置变动为SSMS查询中的相反配置,直到得到超时(或在发送查询之前手动配置应用措施代码中的选项).此刻,我没有利便的2005实例,以是没有测试过这个查询.您也许必要注释掉一个或多个列名称.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读