![](/img/trans.png)
[英]Intermittent System.ComponentModel.Win32Exception: The network path was not found
[英]Currently, All my SQL Request showing “System.ComponentModel.Win32Exception: The wait operation timed out”
突然,所有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, Boolean breakConnection, 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, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +1406
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, 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, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, 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
順便說一句,在我的應用程序中,我可以使用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/
嘗試執行此命令:
exec sp_updatestats
當當前在該表上執行長時間運行的SELECT查詢時(取決於SELECT的隔離級別),嘗試INSERT或UPDATE特定表時,可能會發生此類SQL Server超時錯誤。
有關:
只是停止並再次啟動sql server瀏覽器服務,它解決了我的問題
我也發現了這個問題,但我設法解決了這個問題。
最初我已將所有SQL Server服務設置為由我手動啟動。 但是這(在啟動SQL Server(server_name)一段時間后,出現了這個錯誤。為了記住它,我發現SQL Server Browser和SQL Server Agent(server_name)也需要啟動。
SQL Server代理(server_name)不會被手動啟動,因為它沒有被使用,因此我將其設置為自動,以便在另一個進程使用它時啟動它。
對於我們的案例,問題是由於以下原因:
沒有死鎖,客戶端服務以及SQL Server資源充足。
1)我們測試了補丁/服務包的回滾並且它有效( 不推薦 )
2) (推薦) : 據微軟稱 ,上述條件為我們設置了錯誤:
當應用程序使用Microsoft SQL Server的Microsoft .NET Framework 3.5或Microsoft .NET Framework 4數據提供程序(SQLClient)連接到鏡像數據庫時,您可能會收到以下錯誤消息:
超時已過期。 操作完成之前經過的超時時間或服務器沒有響應。 在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException異常,布爾breakConnection)處於System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()處於System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj,UInt32錯誤)處於System.Data在System.Data的System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt,Boolean trustServerCert,Boolean&marsCapable)的System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()處的.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult,TdsParserStateObject stateObj)。 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin中的SqlClient.TdsParser.Connect(ServerInfo serverInfo,SqlInternalConnectionTds connHandler,Boolean ignoreSniOpenTimeout,Int64 timerExpire,Boolean encrypt,Boolean trustServerCert,Boolean integratedSecurity)(ServerInfo serverInfo,String newPassword,Boolean ignoreSniOpenTimeout,TimeoutTimer timeout, System.Data.S中的SqlConnection owningObject) qlClient.SqlInternalConnectionTds.LoginWithFailover(Boolean useFailoverHost,ServerInfo primaryServerInfo,String failoverHost,String newPassword,Boolean redirectedUserInstance,SqlConnection owningObject,SqlConnectionString connectionOptions,TimeoutTimer timeout)注意如果ConnectionTimeout屬性設置為默認值15秒,您可能會收到錯誤連接打開1.2秒后的消息。
出現此問題是由於鏡像數據庫的連接重試算法中的錯誤。
使用重試算法時,數據提供程序等待第一次讀取(SniReadSync)調用完成。 該調用將發送到運行SQL Server的后端計算機,並通過將連接超時值乘以0.08來計算等待時間。 但是,如果響應很慢並且在等待時間到期之前未完成第一個SniReadSync調用,則數據提供程序會錯誤地將連接設置為注定狀態。
注意在這種情況下,響應緩慢可能由服務器或網絡延遲觸發。
解析度
.NET Framework 4.5.2中已解決此問題。 除了.NET Framework 4.5.2之外, 還有其他.NET F ramework版本 可用的修補程序
更多細節和修補程序下載: https : //support.microsoft.com/en-us/help/2605597/fix-time-out-error-when-a-mirrored-database-connection-is-created-by-t
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.