MSSQL Server BACKUP cannot process database ‘XXX’ because it is in use by this session. It is recommended that the master database be used when performing this operation. Solution to the error

Bir gün tail log backup almaya çalışırken Backup cannot process database..  hatasıyla karşılaştım. Araştırmalarım sonucunda ilgili hatanın veritabanı altındaki açmış olduğum session’dan kaynaklandığını görmüş oldum. Bu hata, “AdventureWorks2012” veritabanının şu anki oturum tarafından kullanıldığını ve bu nedenle tail-log backup işlemi yapılamadığını* söylüyor. Çözüm olarak master veritabanında çalışmanızı öneriyor.

Bu hata mesajına normal log backup veya full backup alındığında karşılaşılmaz sadece tail log backup alındığında karşılaşılmaktadır. Bunun sebebine değinelim:

Tail-log backup, bir veritabanını RESTORE işlemine hazırlamak veya kurtarma modunda (RECOVERY) tutarken son transaction log’u yakalamak için kullanılır.
Bu işlem, veritabanını exclusive lock (özel kilit) modunda kullanır ve başka bağlantıların erişimine izin vermez. Eğer siz aynı oturumda hedef veritabanını kullanıyorsanız (USE [TEST1] gibi), SQL Server bu kilitlenmeyi çözemez ve hata verir.

Tail-log backup, veritabanını single-user mode (tek kullanıcı modu) gibi davrandığı için, başka bir bağlamda (master gibi) çalıştırmak gerekir.
Eğer hedef veritabanında (USE [TEST1]) çalışırsanız, SQL Server sizin oturumunuzu kapatamaz ve backup işlemi başarısız olur. Kısacası Restoring moduna giren bir veritabanının aynı anda aktif session olamaz.

Aşağıdaki resimde dikkat edersek çalıştırmaya çalıştığım kod bloğunun AdventureWorks2012 altında çalıştığını gözlemledim. Resimde sol üst tarafta..

Kod bloğunu master veritabanı altında çalıştırdığımda sorunsuz bir şekilde işlemimi tamamlamış oldum.

Tekrar çalıştırdığımızda hata mesajıyla karşılaşırsak use master’dan sonra aşağıdaki iki kod bloğunun eklenmesi gerekmektedir.

Not: Böyle bir hata mesajı alırsanız Exclusive access could not be obtained because the database is in use.   İlgili makaleden çözüme ulaşabilirsiniz.

use master
ALTER DATABASE AdventureWorks2012 SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE AdventureWorks2012 restricted_user with rollback immediate

ALTER DATABASE AdventureWorks2012 SET MULTI_USER WITH ROLLBACK IMMEDIATE

Başka bir makalede görüşmek dileğiyle..

“Gurura kapılarak insanlara burun kıvırma, ortalıkta çalım satarak yürüme; unutma ki Allah gurura kapılıp kendini beğenen hiç kimseyi sevmez.”Lokman-18

Author: Yunus YÜCEL

1 thought on “MSSQL Server BACKUP cannot process database ‘XXX’ because it is in use by this session. It is recommended that the master database be used when performing this operation. Solution to the error

Bir yanıt yazın

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