sql-server-2005 – 进程从ADO.NET中超时,但在SSMS中没有
我有一个存储进程给我一个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实例,以是没有测试过这个查询.您也许必要注释掉一个或多个列名称. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |