it-swarm-eu.dev

Proces „TASK MANAGER“ přebírá databázi režimu pro jednoho uživatele. Co je to?

Toto je duplikát otázky, kterou jsem položil na stackoverflow , ale bylo mi řečeno, že někdo zde může mít lepší představu o tom, co se děje.

Mám sporadický problém, když upgraduji SQL Server v režimu pro jednoho uživatele pomocí .NET SqlConnection, nějaká jiná aplikace se nějak přihlásí do databáze, zatímco se provádí kód SQL, a vyhodí můj proces. SqlConnection není nijak uzavřen ani likvidován. Ale nějaká jiná aplikace nějak skončí připojena k databázi a to vykopne moje spojení.

Když spustím sp_who, viděl jsem, že proces, který převzal kontrolu nad databází, je Command = "TASK MANAGER".

Kdokoli by mi mohl říct, co je tento proces, jaký je jeho účel a jak se ve světě může dostat do databáze, která je v režimu pro jednoho uživatele a existuje aktivní připojení?

13
galets

Myslím, že tajemství konečně vyřešeno :

Před nastavením databáze na SINGLE_USER ověřte, zda je možnost AUTO_UPDATE_STATISTICS_ASYNC nastavena na OFF. Pokud je nastaveno na ON, podproces pozadí používaný k aktualizaci statistik se připojí k databázi a nebudete moci přistupovat k databázi v režimu pro jednoho uživatele.

6
galets

Měl stejný problém dnes, Pokud jste nevypnuli AUTO_UPDATE_STATISTICS ASYNC, nebudete moci vstoupit do své databáze, můžete to vyřešit tak, že ji uvedete do režimu offline. Důležité je vědět, že musíte nastavit prioritu zablokování na vysokou, v opačném případě budete mimo příkaz. Pomocí následujících příkazů se dostanete z uživatelského režimu SINGLE

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET OFFLINE WITH ROLLBACK IMMEDIATE

Následován

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET ONLINE WITH ROLLBACK IMMEDIATE

Následován

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE
10
Stijn Wynants

Zastavte sledování rozšířených událostí „system_health“. Bude uveden v seznamu

SQL Server Management Studio
-> [ServerName]
-> Management
-> Extended Events
-> Right-Click on 'System_health'
-> Hit Stop Session

Jakmile je blokování opraveno, restartujte relaci.

6
Raghu Nair

Před spuštěním režimu jednoho použití musíte deaktivovat agenta SQL. Protože účet agenta získá přístup jednoho uživatele. Pamatujte, že jediný uživatel není vy prvním uživatelem/procesem, který se připojuje.

0
Nick Winstanley