Bu makalede aynı domain ortamında olan sunucudan başka bir sunucuya backup almaya çalıştığımda Cannot open backup device hatasını almış oldum. Araştırmalarım sonucu bu hatanın sql server servisinin backup alınacak dosya üzerinde yetkisi olmadığı kanısına vardım.

Bunun için backup alınacak sunucu üzerindeki klasöre gelip sağ tıklayıp Properties diyiyoruz.

Gelen ekranda Security sekmesine tıklanır. Edit deyip sql server servis hesabının eklenmesi gerekmektedir. Çünkü sql server’ı ilgilendiren her işlemi sql server servis hesabı yapmaktadır.

Sql server servis hesabını öğrenmek için Sql Configuration Manager ekranına girilip öğrenilir.

Sql servis hesabını öğrendikten sonra ilgili klasördeki Edit bölümüne gelinir. Gelen ekranda Add denilip Active Directory ortamında oluşturulmuş sql server servis hesabı seçilir.


Sql server servis hesabı Ok deyip eklenir. Daha sonra servis hesabına Full Control yetkisi verilmektedir. Apply deyip yetkilendirilme ekranından çıkılır.

Yukarıdaki bölümde advanced sekmesinde girildiğinde aşağıdaki seçeneği işaretleyerek yetkiyi tüm alt klasörlere vermiş oluyoruz.

Bu işlemleri tamamladıktan sonra tekrar hata alırsanız. Klasörün üzerine sağ tıklayıp Properties ekranından Sharing bölümünde Advanced Sharing… kısmına tıklanır.

Gelen ekranda Permissions bölümüne tıklanır.

Gelen ekranda Add butonuna tıklanır.

SqlUser servis hesabımız eklenir. Ok butonuna tıklanıp işlem sonladırılır.

Gelen ekranda SqlUser servis hesabına Full Control yetkisi verilir. İşlemler tamamlanır.

Bu ayarlamaları yaptıktan sonra Backup Job’ımız tekrar çalıştırılır.

Backup’ımızın başarılı bir şekilde alındığını görmüş olduk.

Bu makalede Sql server sunucular arasında backup alırken karşılaşılan Cannot open backup device hatasını anlatmaya çalıştık başka bir makalede görüşmek dileğiyle.
Not: veritabani.gen.tr den görmüş olduğum bir yazıda uzaktaki sunucuya share tanımlanmış, bu share’e backup alınmak isteniyorsa ve bu share’e sql server servis hesabını yetkilendiremiyorsak yapmamız gereken ilgili share sql server’ımızın bulunduğu sunucuya map etmemiz gerekmektedir.
Uzak share’de tanımlı olan kullanıcı bilgilerini aşağıdaki script yardımıyla sql server sunucusuna tanıtabiliriz.
-- 1. Önce xp_cmdshell'i etkinleştir (eğer kapalıysa)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
-- 2. Paylaşımı eşleştir (daha güvenli versiyon)
DECLARE @cmd NVARCHAR(500) = 'NET USE B: "\\khtstsql32\c$\A" /user:SqlUser Yunus1994 /PERSISTENT:NO';
--/PERSISTENT:NO sunucu yeniden başladığında eşleştirmenin kaybolması sağlanır.Kalıcı olması isteniyorsa yes denilebilir.
EXEC xp_cmdshell @cmd, NO_OUTPUT;
-- 3. Eşleştirmenin başarılı olup olmadığını kontrol et
EXEC xp_cmdshell 'NET USE';
İlgili makaleyi aşağıdaki linkten bulabilirsiniz.
Başka bir makalede görüşmek dileğiyle..
“Size verilen her şey ancak dünya hayatının gelip geçici menfaatidir. Allah katındaki nimetler ise inanıp yalnızca Rablerine güvenip dayananlar için her bakımdan daha hayırlı ve daha devamlıdır.” Şûrâ -36