Dies ist ein Duplikat der Frage, die ich beim Stackoverflow gestellt habe , aber mir wurde geraten, dass jemand hier eine bessere Vorstellung davon haben könnte, was passiert.
Ich habe ein sporadisches Problem, wenn ich ein Upgrade von SQL Server in einem Einzelbenutzermodus mit .NET SqlConnection durchführe. Eine andere Anwendung meldet sich irgendwie bei der Datenbank an, während der SQL-Code ausgeführt wird, und startet meinen Prozess. SqlConnection wird in keiner Weise geschlossen oder entsorgt. Aber eine andere Anwendung ist irgendwie mit der Datenbank verbunden und das bringt meine Verbindung zum Erliegen.
Wenn ich sp_who ausführe, kann ich sehen, dass ein Prozess, der die Kontrolle über die Datenbank übernommen hat, Command = "TASK MANAGER" ist.
Jeder kann mir sagen, was dieser Prozess ist, wozu er dient und wie in aller Welt er in eine Datenbank gelangen kann, die sich im Einzelbenutzermodus befindet und eine aktive Verbindung besteht.
quelle
Antworten:
Hatte heute das gleiche Problem: Wenn Sie Ihren AUTO_UPDATE_STATISTICS ASYNC nicht ausgeschaltet haben, können Sie Ihre Datenbank nicht eingeben. Sie können dies lösen, indem Sie Ihre Datenbank offline schalten. Es ist wichtig zu wissen, dass Sie Ihre Deadlock-Priorität auf hoch setzen müssen, da Sie sonst vom Befehl ausgeschlossen werden. Verwenden Sie die folgenden Befehle, um den EINZELNEN Benutzermodus zu verlassen
gefolgt von
gefolgt von
quelle
SET MULTIUSER WITH ROLLBACK IMMEDIATE
hat ganz von alleine funktioniert, alsSET DEADLOCK_PRIORITY HIGH
es zuerst gemacht wurdeIch denke, das Rätsel wurde endlich gelöst :
quelle
Stoppen Sie die erweiterte Ereignisverfolgung "system_health". Es wird unter aufgeführt
SQL Server Management Studio
-> [ServerName]
-> Management
-> Extended Events
-> Right-Click on 'System_health'
-> Hit Stop Session
Starten Sie die Sitzung neu, sobald die Blocker behoben sind.
quelle
Sie müssen SQL Agent deaktivieren, bevor Sie den Einwegmodus starten. Da der Agent accout den Einzelbenutzerzugriff erhält. Denken Sie daran, dass der einzelne Benutzer nicht der erste Benutzer / Prozess ist, der eine Verbindung herstellt.
quelle