Skrip Batch untuk Sandaran Semua Pangkalan Data SQL Server Anda
Kami telah membincangkan cara untuk membuat sandaran pangkalan data SQL Server dari baris arahan, jadi bagaimana jika anda ingin sandaran semua pangkalan data anda sekaligus? Anda boleh membuat skrip batch yang menjalankan arahan sandaran untuk setiap pangkalan data, tetapi skrip ini perlu dikemas kini setiap kali pangkalan data ditambahkan atau dikeluarkan. Di samping itu, sandaran pangkalan data semua akan dimasukkan ke dalam satu fail yang akan berkembang dengan saiz sandaran baru setiap kali ia dijalankan. Sebaliknya, dalam fesyen "menetapkan dan melupakannya" benar, kami akan membuat skrip batch yang akan menyesuaikan diri dengan SQL Server anda apabila pangkalan data baru ditambah dan dialih keluar.
Untuk mendapatkan hak ke titik, ini adalah skrip cadangan:
@ECHO OFF
SETLOCALREM Dapatkan tarikh dalam format YYYY-MM-DD (mengandaikan tempatan ialah Amerika Syarikat)
FOR / F "token = 1,2,3,4 delims = /" %% A IN ('Date / T') DO SET NowDate = %% D - %% B - %% CREM Membina senarai pangkalan data untuk sandaran
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 Backup setiap pangkalan data, mempersiapkan tarikh untuk nama fail
FOR / F "tokens = *" %% I IN (% DBList%) DO (
ECHO Menyimpan pangkalan data: %% Saya
SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] TO Disk =" D: Backup% NowDate% _ %% I.bak ""
ECHO.
)REM Bersihkan fail temp
JIKA EXIST "% DBList%" DEL / F / Q "% DBList%"ENDLOCAL
Dengan asumsi tarikhnya adalah 1/13/2009 dan anda mempunyai 3 pangkalan data bernama 'MyDB', 'AnotherDB' dan 'Nama DB dengan Spaces', skrip akan menghasilkan 3 fail di lokasi sandaran 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
Sudah tentu, anda ingin menyesuaikan skrip ke persekitaran anda jadi inilah yang perlu anda lakukan:
- Jika setempat mesin anda tidak ditetapkan ke AS, perintah 'Tarikh / T' mungkin tidak memulangkan tarikh dalam format "Isnin 01/13/2009". Sekiranya ini berlaku, pembolehubah NowDate tidak akan menghasilkan format yang diingini dan harus dilaraskan. (1 tempat)
- Tukar 'MyServer' menjadi nama SQL Server anda (tambah nama contoh jika berkenaan). (2 tempat)
- Pangkalan data bernama 'master', 'model', 'msdb' dan 'tempdb' adalah pangkalan data yang dihantar dengan SQL Server. Anda boleh menambah nama pangkalan data tambahan ke senarai ini jika anda tidak mahu mereka disandarkan. (1 tempat)
- Tukar lokasi sandaran daripada 'D: Backup' ke lokasi yang anda mahu fail sandaran pangkalan data disimpan.
Sebaik sahaja anda menyesuaikan skrip batch, jadilah ia berjalan melalui Windows Task Scheduler sebagai pengguna dengan hak Administrator dan anda semua ditetapkan.