Kami telah membahas cara mem-backup database SQL Server dari baris perintah, jadi bagaimana jika Anda ingin membuat cadangan semua basis data Anda sekaligus? Anda bisa membuat skrip batch yang menjalankan perintah cadangan untuk setiap database, tetapi skrip ini harus diperbarui setiap kali database ditambahkan atau dihapus. Selain itu, backup database semua akan ditambahkan ke satu file yang akan tumbuh dengan ukuran cadangan baru setiap kali dijalankan. Sebagai gantinya, dalam mode "atur dan lupakan" yang sebenarnya, kita akan membuat skrip batch yang akan beradaptasi dengan SQL Server Anda saat database baru ditambahkan dan dihapus.
Untuk langsung ke intinya, ini adalah skrip cadangan:
@ECHO OFF
SETLOCALREM Dapatkan tanggal dalam format YYYY-MM-DD (mengasumsikan lokal adalah Amerika Serikat)
FOR / F "token = 1,2,3,4 delims = /" %% A IN ('Date / T') DO SET NowDate = %% D - %% B - %% CREM Buat daftar database untuk dicadangkan
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Nama] NOT IN ('master', 'model', 'msdb', 'tempdb') ”>“% DBList% ”REM Cadangkan setiap basis data, tambahkan tanggal ke nama file
FOR / F "token = *" %% I IN (% DBList%) DO (
ECHO Mencadangkan basis data: %% I
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] KE Disk =" D: Backup% NowDate% _ %% I.bak "”
GEMA.
)REM Bersihkan file temp
JIKA ADA "% DBList%" DEL / F / Q "% DBList%"ENDLOCAL
Dengan asumsi tanggal adalah 1/13/2009 dan Anda memiliki 3 database bernama 'MyDB', 'AnotherDB' dan 'DB Name with Spaces', skrip akan menghasilkan 3 file di lokasi cadangan yang ditentukan:
Tentu saja, Anda akan ingin menyesuaikan skrip ke lingkungan Anda jadi di sini adalah apa yang perlu Anda lakukan:
Setelah Anda menyesuaikan skrip batch, jadwalkan untuk dijalankan melalui Windows Task Scheduler sebagai pengguna dengan hak Administrator dan Anda sudah siap.