wie SQL-Server-Timeout von .NET-Anwendung zu erkennen, ohne catch Ausnahme verwenden

8

In meiner aktuellen Anwendung führe ich ein Update aus, indem ich den T-SQL Update-Befehl aufruft. Das Problem liegt vor, wenn derselbe Datensatz zu diesem Zeitpunkt von anderen Benutzern gesperrt wurde.

Bei der .NET-Anwendung wartet die Anwendung bis zum SQL Server-Timeout, dann wird das SqlException-Timeout ausgelöst.

Ist es möglich, zuerst zu prüfen, ob ein bestimmter Datensatz von einem anderen Prozess gesperrt ist, anstatt die Ausnahme zu erfassen?

    
hadi teo 27.04.2010, 06:44
quelle

2 Antworten

22

Nein, nicht wirklich.

Der Standardweg besteht darin, try/catch und handle SqlException Number 1205 (Deadlock-Opfer) zu verwenden und die Abfrage erneut zu versuchen:

%Vor%

[Hinweis: Break-Anweisungen, die nicht für die Kompaktheit hinzugefügt wurden

Beachten Sie auch . Viele Sperrprobleme können durch Bereitstellung der entsprechenden abdeckenden Indizes behoben werden.

    
Mitch Wheat 27.04.2010, 06:52
quelle
0
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ tag123sqlserver ___ Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem (RDBMS). Verwenden Sie dieses Tag für alle SQL Server-Editionen, einschließlich Compact, Express, Azure, Fast-Track, APS (früher PDW) und Azure SQL DW. Verwenden Sie dieses Tag nicht für andere Arten von DBMS (MySQL, PostgreSQL, Oracle usw.). Verwenden Sie dieses Tag nicht für Probleme bei der Software- und mobilen Entwicklung, es sei denn, es steht in direktem Zusammenhang mit der Datenbank. ___ tag123sqlserver2008 ___ Verwenden Sie dieses Tag für Fragen, die für die 2008-Version von Microsoft SQL Server spezifisch sind. ___ tag123sqlserver2005 ___ Verwenden Sie dieses Tag für Fragen, die für die Version 2005 von Microsoft SQL Server spezifisch sind. ___ qstnhdr ___ wie SQL-Server-Timeout von .NET-Anwendung zu erkennen, ohne catch Ausnahme verwenden ___ answer2719268 ___

Nein, nicht wirklich.

Der Standardweg besteht darin, %code% und handle %code% Number %code% (Deadlock-Opfer) zu verwenden und die Abfrage erneut zu versuchen:

%Vor%

[Hinweis: Break-Anweisungen, die nicht für die Kompaktheit hinzugefügt wurden

Beachten Sie auch . Viele Sperrprobleme können durch Bereitstellung der entsprechenden abdeckenden Indizes behoben werden.

    
___ tag123sqlserver2016 ___ Verwenden Sie dieses Tag für Fragen, die spezifisch für die Version 2016 von Microsoft SQL Server sind. ___ qstntxt ___

In meiner aktuellen Anwendung führe ich ein Update aus, indem ich den T-SQL Update-Befehl aufruft. Das Problem liegt vor, wenn derselbe Datensatz zu diesem Zeitpunkt von anderen Benutzern gesperrt wurde.

Bei der .NET-Anwendung wartet die Anwendung bis zum SQL Server-Timeout, dann wird das SqlException-Timeout ausgelöst.

Ist es möglich, zuerst zu prüfen, ob ein bestimmter Datensatz von einem anderen Prozess gesperrt ist, anstatt die Ausnahme zu erfassen?

    
___
IMHO 27.04.2010 13:28
quelle