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?
Nein, nicht wirklich.
Der Standardweg besteht darin, try/catch
und handle SqlException
Number 1205
(Deadlock-Opfer) zu verwenden und die Abfrage erneut zu versuchen:
[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.
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.
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?
Tags und Links sql-server c# sql-server-2005 sql-server-2008 sql-server-2016