Daha önce de tüm kullanıcı veritabanların full backup'ını değişik yöntemlerle alacak kodları paylaşmıştım(Bkz.Tüm Kullanıcı Veritabanlarının Full Backup'ını Alma). Şimdi ise daha önce paylaşmış olduğum kodlardan daha kısa bir kod ile tüm kullanıcı veritabanların full backup'ını alacak kodu aşağıdaki gibi paylaşıyorum:
exec sp_msforeachdb 'if db_id(''?'')>4 backup database [?] to disk = ''c:\?.bak'' with init, compression;'
sp_msforeachdb undocumented stored procedure'ı oldukça yararlı ve çoğu yerde işimizi kolaylaştıran bir sp. Tüm veritabanlarında yapacağınız işlemleri bu sp ile halledebilirsiniz.
6 yorum:
Mehmet Hocam;
SQL 2008 R2 kullanıyorum fakat sp_foreachdb procedure'ü bulunamıyor bende. Nedeni hakkında bir fikriniz olabilir mi?
Saygılar.
Msg 2812, Level 16, State 62, Line 1
Could not find stored procedure 'sp_foreachdb'.
Komutu sp_foreachdb değil de sp_msforeachdb şeklinde dener misin(Kodu eklerken ms i kaldırmışım:()?
Mehmet Hocam;
@command değilde @command1 olmalı. Parametre o şekilde.
Ve diğer parametreler de uymuyor. Ayrıca tempdb hata veriyor. Ben şu şekile çevirdim.
Not: Belirttiğimiz klasör oluştulmamışsa yine hata veriyor. Klasörün öncesinden oluştulması gerekir.
USE master
EXEC sp_MSforeachdb @command1='
IF ''?'' NOT IN (''master'', ''model'', ''msdb'', ''tempdb'')
BEGIN
BACKUP DATABASE [?] TO DISK = ''C:\Backups\?.bak''
END'
Tempdb'nin backup'ının alınmasına izin verilmez.
Daha kısası şu şekilde olabilir:
exec sp_msforeachdb 'if db_id(''?'')>4 backup database [?] to disk = ''c:\?.bak'' with init, compression;'
Merhaba İsmim Arda AKSOY,
sorum şu sql server 2008 express edition sürüm kullanıyorum.express sürüm olduğu için job olayı ve backup'ı manuel alıyorum.otomatik yaptırabileceğim bir yöntem buraya koyma şansınız varmı ?
Teşekkürler,
Merhaba Arda bey,
Task Scheduler üzerinde job tanımlayıp bu job ile komut satırından SQL de backup alan kodu çalıştırabilirsiniz.
Yorum Gönder