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

目前,所有我的SQL请求显示“System.ComponentModel.Win32Excepti

发布时间:2020-12-12 08:48:54 所属栏目:MsSql教程 来源:网络整理
导读:突然间,所有sql server请求显示“System.ComponentModel.Win32Exception:等待操作超时”.找到问题最快的方法是什么? Stack Trace: [Win32Exception (0x80004005): The wait operation timed out][SqlException (0x80131904): Timeout expired. The timeout
突然间,所有sql server请求显示“System.ComponentModel.Win32Exception:等待操作超时”.找到问题最快的方法是什么?
Stack Trace: 


[Win32Exception (0x80004005): The wait operation timed out]

[SqlException (0x80131904): Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection,Action`1 wrapCloseInAction) +1767866
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Action`1 wrapCloseInAction) +5352418
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose) +244
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean& dataReady) +1691
   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +61
   System.Data.SqlClient.SqlDataReader.get_MetaData() +90
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString) +365
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,Boolean returnStream,Boolean async,Int32 timeout,Task& task,Boolean asyncWrite,SqlDataReader ds) +1406
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,String method,TaskCompletionSource`1 completion,Boolean asyncWrite) +177
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,String method) +53
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,String method) +134
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +41
   System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,DataTable[] datatables,Int32 startRecord,Int32 maxRecords,String srcTable,IDbCommand command,CommandBehavior behavior) +140
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,CommandBehavior behavior) +316
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,String srcTable) +86
   System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +1481
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments,DataSourceViewSelectCallback callback) +21

我得到了导致阻塞问题的SQl,

http://www.sqlskills.com/blogs/paul/script-open-transactions-with-text-and-plans/

解决方法

在这里我怎么能找到这个问题,
首先检查所有打开的事务数据库,
DBCC OPENTRAN ('Databse')

如果有一个打开的事务,那么抓住它的SPID并将其放在INPUTBUFFER中

DBCC INPUTBUFFER (58)

这将给你实际的SQL.如果你想,你可以杀死这个交易,

KILL 58

BTW,在我的应用程序中,我可以使用READ COMMITTED数据,

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

要么

Select * from Products WITH NoLock

这是快速找到SQl的另一种方法,

SELECT
    [s_tst].[session_id],[s_es].[login_name] AS [Login Name],DB_NAME (s_tdt.database_id) AS [Database],[s_tdt].[database_transaction_begin_time] AS [Begin Time],[s_tdt].[database_transaction_log_bytes_used] AS [Log Bytes],[s_tdt].[database_transaction_log_bytes_reserved] AS [Log Rsvd],[s_est].text AS [Last T-SQL Text],[s_eqp].[query_plan] AS [Last Plan]
FROM
    sys.dm_tran_database_transactions [s_tdt]
JOIN
    sys.dm_tran_session_transactions [s_tst]
ON
    [s_tst].[transaction_id] = [s_tdt].[transaction_id]
JOIN
    sys.[dm_exec_sessions] [s_es]
ON
    [s_es].[session_id] = [s_tst].[session_id]
JOIN
    sys.dm_exec_connections [s_ec]
ON
    [s_ec].[session_id] = [s_tst].[session_id]
LEFT OUTER JOIN
    sys.dm_exec_requests [s_er]
ON
    [s_er].[session_id] = [s_tst].[session_id]
CROSS APPLY
    sys.dm_exec_sql_text ([s_ec].[most_recent_sql_handle]) AS [s_est]
OUTER APPLY
    sys.dm_exec_query_plan ([s_er].[plan_handle]) AS [s_eqp]
ORDER BY
    [Begin Time] ASC;
GO

http://www.sqlskills.com/blogs/paul/script-open-transactions-with-text-and-plans/

(编辑:李大同)

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

    推荐文章
      热点阅读