MSSQL Server “Changes to the state or options of database ” cannot be made at this time. The database is in single-user mode, and a user is currently connected to it.” Solution to the Error

Bu makalede  karşılaşmış olduğum hataya değinmek istedim. Çalıştığım ortamda herhangi bir veritabanını  aşağıdaki komutlarla silmeye  çalıştım.

USE [master]
GO
ALTER DATABASE ABC SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
DROP DATABASE [ABC]
GO

Yukarıdaki komutu çalıştırdığım zaman ilk gelen single-user’ı alır mantığı olduğu için veritabanını single-user mode’a alamadım. Single user aşağıdaki hatada da belirtildiği gibi başka bir kullanıcı almıştı.

Msg 5064, Level 16, State 1, Line 3

Changes to the state or options of database ” cannot be made at this time. The database is in single-user mode, and a user is currently connected to it.

Daha sonra işlemimiz Deadlock’a düştü.

Yukarıdaki hata ile karşılaştıktan sonra active monitore açarak ilgili database altındaki tüm user’ları kill etmeye çalıştım ve bir sonuç alamadım. Veritabanı altındaki tüm sessionları kill eden sorguyu bilmediğim için veritabanını Offline moduna alıp daha sonra Online mode aldığımda veritabanımı düzeltebildim. Şimdi take offline ve bring online ifadelerini kullanmadan aşağıdaki komutlar sayesinde veritabanı altındaki tüm sessionları kill eden sorguyu görmüş olacağız.

select 'kill '+CAST(spid AS varchar(50)) from sys.sysprocesses where dbid=DB_ID('Database_Name')

Gelen tüm kill ifadelerini kopyalayıp çalıştırmamız gerekmektedir.

Yada kill işlemini otomatik yapılmasını istiyorsak aşağıdaki komut kullanılabilir.

declare @Sql varchar(1000), @veritabaniadi varchar(100) 
set @veritabaniadi = 'Buraya Veritabanı Adını Yazmalısınız' 
set @Sql = ''  
select  @Sql = @Sql + 'kill ' + convert(char(10), spid) + ' ' 
from    master.dbo.sysprocesses 
where   db_name(dbid) = @veritabaniadi
     and 
     dbid <> 0 
     and 
     spid <> @@spid 
exec(@Sql)
GO

Tüm sessionları kill ettikten sonra veritabanımızı başarılı bir şekilde kurtardık.

Başka bir makalede görüşmek üzere..

“De ki: Allah’ın bizim için yazdığından başkası bize asla erişmez. O bizim mevlâmızdır. Onun için müminler yalnız  Allah’a dayanıp güvensinler.” Tevbe-51

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir