“GÖREV MÜDÜRÜ” süreci tek kullanıcılı bir modu ele geçirmektedir. Bu ne?


13

Bu, stackoverflow ile ilgili sorduğum sorunun bir kopyası , ancak burada birisinin ne olduğunu daha iyi bir fikre sahip olabileceği tavsiye edildi.

SQL Server yürütülürken SQL Server tek kullanıcı modunda yükseltilirken, SQL kodu yürütülürken başka bir uygulama bir şekilde veritabanında oturum açar ve işlemimi başlatır. SqlConnection hiçbir şekilde kapatılmaz veya atılmaz. Ama başka bir uygulama bir şekilde veritabanına bağlı ve bu benim bağlantımı başlattı.

Sp_who çalıştırdığımda, veritabanının kontrolünü ele geçiren bir işlem Command = "TASK MANAGER" olduğunu görebiliyordum.

Herkes bana bu sürecin ne olduğunu, amacının ne olduğunu ve dünyada tek kullanıcı modunda olan bir veritabanına nasıl girebileceğini ve aktif bir bağlantı olduğunu söyleyebilirdi?


Bu işlem sırasında SQL Agent'ı kapatıyor musunuz? "GÖREV MÜDÜRÜ" adı verilen görevler (düşük sivri sayılara sahip) dahili süreçlerdir.
Jon Seigel

@JonSeigel hayır, yapmadım. SQL Agent'ın TASK MANAGER'ı çalıştıran gerçek bir süreç olduğunu mu söylüyorsunuz?
Galets

% 100 emin değilim. Ne biliyorum SQL Agent çalışırken örneğe bağlanır ve bu sunucu tek kullanıcı modundayken giriş yapmanızı engelleyebilir. Dün bu sorunu yaşadım ve SQL Agent'ı durdurmak sorunu çözdü.
Jon Seigel

2
Açık olmak gerekirse, bu, işlemleri ve sistem performansını görüntülemek için Windows'ta kullandığınız Görev Yöneticisi ile aynı değildir.
Aaron Bertrand

Yanıtlar:


10

Bugün aynı sorun vardı, AUTO_UPDATE_STATISTICS ASYNC'yi KAPATMADANIZ, veritabanınızı giremezsiniz, veritabanınızı çevrimdışı duruma getirerek bunu çözebilirsiniz. Bilmeniz gereken önemli nokta, kilitlenme önceliğinizi yüksek olarak ayarlamanız gerektiğidir, aksi takdirde komuttan kilitleneceksiniz. TEK kullanıcı modundan çıkmak için aşağıdaki komutları kullanın

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET OFFLINE WITH ROLLBACK IMMEDIATE

Bunu takiben

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET ONLINE WITH ROLLBACK IMMEDIATE

Bunu takiben

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE

3
Bunun için çok teşekkür ederim. Ancak ÇEVRİMDIŞI / ÇEVRİMİÇİ adım gerekli olmadığını buldum; SET MULTIUSER WITH ROLLBACK IMMEDIATEzaman kendisi tarafından sadece çalıştı SET DEADLOCK_PRIORITY HIGHilk yapıldı
Ross Presser

6

Bence gizem sonunda çözüldü :

Veritabanını SINGLE_USER olarak ayarlamadan önce, AUTO_UPDATE_STATISTICS_ASYNC seçeneğinin KAPALI olarak ayarlandığını doğrulayın. AÇIK olarak ayarlandığında, istatistikleri güncellemek için kullanılan arka plan iş parçacığı veritabanıyla bağlantı kurar ve veritabanına tek kullanıcı modunda erişemezsiniz.


6

"System_health" genişletilmiş olay izlemeyi durdurun. Altında listelenecek

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

Engelleyici düzeltildikten sonra oturumu yeniden başlatın.


Diğer cevap bunun neden olduğunu açıklasa da, bu sorunun nasıl çözüleceğini açıklıyor.
Boris Callens

Benim için mükemmel çözünürlük. Beklendiği gibi çalıştı
Im88

0

Tek kullanım modunu başlatmadan önce 'önce' SQL Agent'ı devre dışı bırakmanız gerekir. Ajan hesabı tek kullanıcı erişimini alacaktır. Unutmayın, tek kullanıcı sizin bağlanan ilk kullanıcı / işlem değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.