Mājas lapa » » Partijas skripts, lai dublētu visas SQL servera datu bāzes

    Partijas skripts, lai dublētu visas SQL servera datu bāzes

    Mēs jau esam noslēguši, kā backup SQL Server datu bāzi no komandrindas, tad ko darīt, ja vēlaties, lai visas datubāzes tiktu dublētas uzreiz? Varat izveidot partijas skriptu, kas katrai datu bāzei vada dublēšanas komandu, bet šis skripts būtu jāatjaunina katru reizi, kad tiek pievienota vai noņemta datu bāze. Turklāt datubāzes dublējumi tiks pievienoti vienai datnei, kas katru reizi, kad to veiks, palielināsies pēc jaunā dublējuma lieluma. Tā vietā, taisnīgi “iestatiet to un aizmirstiet”, mēs izveidosim partijas skriptu, kas tiks pielāgots jūsu SQL serverim, jo ​​tiks pievienotas un noņemtas jaunas datubāzes..

    Lai iegūtu tiesības uz šo punktu, tas ir rezerves skripts:

    @ECHO OFF
    SETLOCAL

    REM Saņemt datumu formātā YYYY-MM-DD (pieņem, ka lokalizācija ir Amerikas Savienotās Valstis)
    FOR / F “žetoni = 1,2,3,4 delims = /” %% A IN ('Datums / T') DO SET NowDate = %% D - %% B - %% C

    REM Izveidojiet datu bāžu sarakstu, lai dublētu
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabāzes WHERE [Name] NOT IN ('master', 'model', 'msdb', 'tempdb') '> “% DBList%”

    REM Backup katru datu bāzi, sagatavojot datumu faila nosaukumam
    FOR / F “žetoni = *” %% I IN (% DBList%) DO (
    ECHO dublēšanas datu bāze: %% I
    SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%% I] TO Disk =" D: Backup% NowDate% _ %% I.bak "”
    ECHO.
    )

    REM Notīrīt temp failu
    IF EXIST “% DBList%” DEL / F / Q “% DBList%”

    ENDLOCAL

    Pieņemot, ka datums ir 1/13/2009, un jums ir 3 datubāzes ar nosaukumu "MyDB", "AnotherDB" un "DB Name with Spaces", skripts izveidos 3 failus norādītajā rezerves atrašanās vietā:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB nosaukums ar Spaces.bak
    • 2009-01-13_MyDB.bak

    Partijas skripta pielāgošana un palaišana

    Protams, jūs vēlaties pielāgot skriptu savai videi, tāpēc šeit ir nepieciešams:

    • Ja jūsu ierīces lokalizācija nav iestatīta uz ASV, komanda 'Date / T' nevar atgriezt datumu formātā “Tue 01/13/2009”. Šādā gadījumā mainīgais "NowDate" neradīs vēlamo formātu un ir jāpielāgo. (1 vieta)
    • Mainiet 'MyServer', lai tas būtu jūsu SQL servera nosaukums (ja nepieciešams, pievienojiet gadījuma nosaukumu). (2 vietas)
    • Datubāzes ar nosaukumu “kapteinis”, “modelis”, “msdb” un “tempdb” ir datu bāzes, kas nosūta ar SQL Server. Ja nevēlaties, lai tie tiktu dublēti, šajā sarakstā varat pievienot papildu datubāzes nosaukumus. (1 vieta)
    • Mainiet dublējuma atrašanās vietu no “D: Backup” uz vietu, kur vēlaties saglabāt datu bāzes dublējuma failus.

    Kad esat pielāgojis partijas skriptu, ieplānojiet to, izmantojot Windows uzdevumu plānotāju kā lietotāju ar administratora tiesībām, un jūs visi esat iestatījuši.