Laman » bagaimana untuk » Skrip Batch untuk Sandaran Semua Pangkalan Data SQL Server Anda

    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
    SETLOCAL

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

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