it-swarm.com.de

Derzeit wird in meiner gesamten SQL-Anforderung "System.ComponentModel.Win32Exception: Wartezeit" angezeigt

Plötzlich zeigten alle SQL Server-Anforderungen "System.ComponentModel.Win32Exception: Der Wartevorgang überschritten". Wie kann ich das Problem am schnellsten finden?

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

Ich habe die SQl, die das Blockierungsproblem verursacht, durch,

http://www.sqlskills.com/blogs/paul/script-open-transaktionen-mit-text-and-plans/

10
user960567

Wie ich das Problem finden konnte, Überprüfen Sie zunächst alle offenen Transaktionen Ihrer Datenbank.

DBCC OPENTRAN ('Databse')

Wenn es eine offene Transaktion gibt, dann schnappen Sie sich die SPID und fügen Sie sie in INPUTBUFFER ein

DBCC INPUTBUFFER (58)

Dadurch erhalten Sie die tatsächliche SQL. Wenn Sie möchten, können Sie diese Transaktion beenden,

KILL 58

Übrigens, in meiner Anwendung kann ich READ COMMITTED-Daten verwenden,

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

Oder

Select * from Products WITH NoLock

Hier ist ein weiterer Weg, um die SQl schnell zu finden,

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-transaktionen-mit-text-and-plans/

13
user960567

Versuchen Sie diesen Befehl auszuführen:

exec sp_updatestats
3
Dhaval

Dieser Typ eines SQL Server-Zeitüberschreitungsfehlers kann bei dem Versuch auftreten, eine bestimmte Tabelle einzufügen oder zu aktualisieren, wenn derzeit eine lang andauernde SELECT-Abfrage für diese Tabelle ausgeführt wird (abhängig von der Isolationsstufe von SELECT).

Verbunden:

1
Jon Schneider

In unserem Fall wurde das Problem aus folgenden Gründen verursacht:

  1. Eine ältere Anwendung, auf der .NET 4.0 ausgeführt wird
  2. Der Server wurde kürzlich mit den neuesten .Net-Patches versehen (Stand: 2018/11/08).
  3. Die betreffende Datenbank wurde gespiegelt

Es gab keine Deadlocks und die Clientdienste sowie SQL Server waren gut ausgestattet.

Unsere Lösung:

1) Wir haben ein Rollback der Patches/des Service Packs getestet und es hat funktioniert (Nicht empfohlen)

2) (Recommended): Laut Microsoft setzen uns die obigen Bedingungen für den Fehler ein:

Wenn eine Anwendung Microsoft .NET Framework 3.5 oder Microsoft .__ verwendet. .NET Framework 4-Datenprovider für Microsoft SQL Server (SQLClient) an Wenn Sie eine Verbindung zu einer gespiegelten Datenbank herstellen, wird möglicherweise die folgende Fehlermeldung angezeigt Botschaft: 

Zeitüberschreitung. Die Zeitüberschreitung ist vor .__ vergangen. Abschluss des Vorgangs oder der Server antwortet nicht. beim System.Data.SqlClient.SqlInternalConnection.OnError (SqlException Ausnahme, Boolean breakConnection) um System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning () um System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject StateObj, UInt32-Fehler) um System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult AsyncResult, TdsParserStateObject stateObj) um System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket () um System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake (Boolean Encrypt, Boolean trustServerCert, Boolean und marsCapable) um System.Data.SqlClient.TdsParser.Connect (ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolesche Verschlüsselung, Boolean trustServerCert ..... System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo ServerInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer-Timeout, SqlConnection owningObject) um (0)......................................................................... Eigenschaft ist auf den Standardwert gesetzt Wert von 15 Sekunden erhalten Sie möglicherweise die Fehlermeldung nach der Verbindung ist für 1,2 Sekunden geöffnet.

Ursache

Dieses Problem tritt aufgrund eines Fehlers im Verbindungswiederholungs-Algorithmus für gespiegelte Datenbanken.Auf. _

Wenn der Wiederholungsalgorithmus verwendet wird, wartet der Datenanbieter auf die Erster Lesevorgang (SniReadSync) zum Beenden. Der Anruf wird an die .__ gesendet. Back-End-Computer, auf dem SQL Server ausgeführt wird, und die Wartezeit ist berechnet durch Multiplikation des Verbindungs-Timeout-Werts mit 0,08 . Der Datenprovider legt jedoch eine Verbindung falsch zu einem Doomed .__ fest. state, wenn eine Antwort langsam ist und der erste SniReadSync-Aufruf nicht .__ ist. abgeschlossen, bevor die Wartezeit abläuft.

Hinweis Die langsame Antwort kann in diesem Fall entweder durch die .__ ausgelöst werden. Server oder nach Netzwerklatenz.

Auflösung

Dieses Problem ist behoben in .NET Framework 4.5.2. In Ergänzung zu .NET Framework 4.5.2, für andere .NET sind Hotfixes verfügbar F Framework-Versionen


Weitere Informationen und Hotfix-Download: https://support.Microsoft.com/de-de/help/2605597/fix-time-out-error-when-a-mirrored-database-connection-iscreated -von-t

0
user919426

Ich habe dieses Problem auch gefunden, aber es ist mir gelungen, es zu beheben.

Ursprünglich hatte ich alle SQL Server-Dienste so eingestellt, dass sie von mir manuell gestartet werden. Dieser Fehler (nach einer Weile des Startens von SQL Server (Servername)) trat jedoch auf, und ich musste feststellen, dass SQL Server Browser und SQL Server Agent (Servername) ebenfalls gestartet werden mussten.

Der SQL Server-Agent (Servername) wurde nicht manuell gestartet, da er nicht verwendet wurde. Daher habe ich ihn auf "Automatisch" gesetzt, sodass er gestartet wird, wenn er von einem anderen Prozess verwendet wird.

0
Harvey

stoppen Sie einfach und starten Sie den SQL Server-Browser erneut. Das Problem wurde dadurch gelöst

0
user3173814