If-Koubou

Batch Script untuk Mencadangkan Semua Database Server SQL Anda

Batch Script untuk Mencadangkan Semua Database Server SQL Anda (Bagaimana caranya)

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
SETLOCAL

REM 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 - %% C

REM 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:

  • 2009-01-13_AnotherDB.bak
  • Nama 2009-01-13_DB dengan Spaces.bak
  • 2009-01-13_MyDB.bak

Menyesuaikan dan Menjalankan Skrip Batch

Tentu saja, Anda akan ingin menyesuaikan skrip ke lingkungan Anda jadi di sini adalah apa yang perlu Anda lakukan:

  • Jika lokal mesin Anda tidak diatur ke AS, perintah 'Tanggal / T' mungkin tidak mengembalikan tanggal dalam format "Tue 01/13/2009". Jika ini kasus, variabel NowDate tidak akan menghasilkan format yang diinginkan dan harus disesuaikan. (1 tempat)
  • Ubah 'MyServer' menjadi nama Server SQL Anda (tambahkan nama instan 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 dicadangkan. (1 tempat)
  • Ubah lokasi cadangan dari 'D: Backup' ke lokasi tempat Anda ingin menyimpan file cadangan basis data.

Setelah Anda menyesuaikan skrip batch, jadwalkan untuk dijalankan melalui Windows Task Scheduler sebagai pengguna dengan hak Administrator dan Anda sudah siap.