2011-01-19

Tüm Kullanıcı Veritabanların Backup'ını Alma(sp_msforeachdb)

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:

ahmetrende dedi ki...

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'.

Mehmet GÜZEL dedi ki...

Komutu sp_foreachdb değil de sp_msforeachdb şeklinde dener misin(Kodu eklerken ms i kaldırmışım:()?

ahmetrende dedi ki...

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'

Mehmet GÜZEL dedi ki...

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;'

iobates dedi ki...

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,

Mehmet GÜZEL dedi ki...

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.

.::YASAL UYARI::.

©2004-2016 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.