Skrip Batch untuk Mencadangkan Semua Database SQL Server Anda
Kami telah membahas cara membuat cadangan basis data 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, cadangan basis data semua akan ditambahkan ke satu file yang akan tumbuh dengan ukuran cadangan baru setiap kali dijalankan. Sebaliknya, dalam mode "set it and forget it" yang benar, kami 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 MATI
SETLOCALREM Dapatkan tanggal dalam format YYYY-MM-DD (menganggap lokal adalah Amerika Serikat)
UNTUK / 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 [Name] NOT IN ('master', 'model', 'msdb', 'tempdb') ”>“% DBList% ”REM Cadangkan setiap basis data, tambahkan tanggal ke nama file
UNTUK / F “token = *” %% I IN (% DBList%) DO (
ECHO Membuat cadangan basis data: %% I
SqlCmd -E -S MyServer -Q “CADANGAN DATABASE [%% I] KE Disk =" D: Cadangkan% SekarangTanggal% _ %% I.bak ""
GEMA.
)REM Bersihkan file temp
JIKA ADA “% DBList%” DEL / F / Q “% DBList%”ENDLOCAL
Dengan asumsi tanggal adalah 13/1/2009 dan Anda memiliki 3 database bernama 'MyDB', 'AnotherDB' dan 'DB Name with Spaces', skrip akan menghasilkan 3 file di lokasi cadangan yang ditentukan:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Nama dengan Spaces.bak
- 2009-01-13_MyDB.bak
Menyesuaikan dan Menjalankan Skrip Batch
Tentu saja, Anda ingin menyesuaikan skrip dengan lingkungan Anda, jadi inilah yang perlu Anda lakukan:
- Jika lokal mesin Anda tidak disetel ke AS, perintah 'Tanggal / T' mungkin tidak mengembalikan tanggal dalam format “Sel 01/13/2009”. Jika hal ini terjadi, variabel NowDate tidak akan menghasilkan format yang diinginkan dan harus disesuaikan. (1 tempat)
- Ubah 'MyServer' menjadi nama SQL Server Anda (tambahkan nama instance jika berlaku). (2 tempat)
- Database bernama 'master', 'model', 'msdb' dan 'tempdb' adalah database yang dikirimkan dengan SQL Server. Anda dapat menambahkan nama database tambahan ke daftar ini jika Anda tidak ingin mereka didukung. (1 tempat)
- Ubah lokasi cadangan dari 'D: Cadangkan' ke lokasi tempat Anda ingin menyimpan file cadangan basis data.
Setelah Anda mengkustomisasi skrip kumpulan, jadwalkan skrip untuk dijalankan melalui Penjadwal Tugas Windows sebagai pengguna dengan hak Administrator dan Anda siap.