MSSQL Server “The database could not be exclusively locked to perform the operation.” Solution of the Error

Bu makalede veritabanının ismini değiştirdiğimizde karşılaşmış olduğum hata mesajına değinmiş olacağım. Bu hata mesajı veritabanı kullanımda olduğundan dolayı oluşmaktadır.

Bu hatanın çözümü için veritabanını single-user modda ayarlamamız gerekmektedir. Dikkat edin arka planda çoklu kullanıcı grubu varsa ilk single-user’ı alan yetkili olmaktadır. Buda deadlock’lara sebebiyet vereceği için dikkatli olunması gerekmektedir.

Single_user modda veritabanımızı çalıştırmayıp aşağıdaki komut ile veritabanı üzerindeki tüm sessionları kill edebiliriz.

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

 Yukarıdaki kill komutunu kullanmayıp Single-user modda aşağıdaki komutları kullanırsanız isim değişikliğiniz başarılı bir şekilde gerçekleşmiş olacaktır.

EXEC sp_renamedb 'dev_db', 'test_db';

ALTER DATABASE dev_db MODIFY NAME = test_db;

A veritabanının ismini B olarak değiştirmek istediğimde başarılı bir şekilde işlemlerimi gerçekleştirmiş oldum. Single_user mod veritabanı altında bulunan tüm sessionların kill olmasına sebep olacaktır.

USE master;
GO
ALTER DATABASE A SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE A MODIFY NAME = B;
GO
ALTER DATABASE B SET MULTI_USER;
GO

Not: Veritabanı restricted_user moduna alınabilir. Buda ayrı bir yöntemdir.

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

“Güneşi parlak bir ışık kaynağı, ayı ise bir nûr yapan, yılların sayısını ve vakitlerin hesâbını bilmeniz için aya menziller takdir eden O’dur. Allah, bütün bunları boş yere değil gerçek bir gaye, sebep ve hikmete dayalı olarak yaratmıştır. O, bilip anlayacak kimseler için âyetlerini bu şekilde detaylarıyla açıklamaktadır.”Yunus- 5

Author: Yunus YÜCEL

1 thought on “MSSQL Server “The database could not be exclusively locked to perform the operation.” Solution of the Error

Bir yanıt yazın

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