Główna » jak » Skrypt wsadowy do tworzenia kopii zapasowych wszystkich baz danych SQL Server

    Skrypt wsadowy do tworzenia kopii zapasowych wszystkich baz danych SQL Server

    Omówiliśmy już sposób tworzenia kopii zapasowej bazy danych SQL Server z wiersza poleceń, więc co zrobić, jeśli chcesz wykonać kopię zapasową wszystkich baz danych jednocześnie? Można utworzyć skrypt wsadowy, który uruchamia polecenie tworzenia kopii zapasowej dla każdej bazy danych, ale skrypt ten musiałby być aktualizowany za każdym razem, gdy baza danych zostanie dodana lub usunięta. Ponadto kopie zapasowe bazy danych zostaną dołączone do jednego pliku, który będzie powiększany o wielkość nowej kopii zapasowej za każdym razem, gdy zostanie uruchomiony. Zamiast tego, w trybie "ustaw i zapomnij" stworzymy skrypt wsadowy, który dostosuje się do twojego serwera SQL, gdy nowe bazy danych zostaną dodane i usunięte.

    Aby przejść od razu do sedna, jest to skrypt zapasowy:

    @ECHO OFF
    SETLOCAL

    REM Pobierz datę w formacie RRRR-MM-DD (zakłada, że ​​regionem są Stany Zjednoczone)
    FOR / F "tokeny = 1,2,3,4 delims = /" %% A IN ("Data / T") DO USTAW TerazData = %% D - %% B - %% C

    REM Utwórz listę baz danych do wykonania kopii zapasowej
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Nazwa] NOT IN ("master", "model", "msdb", "tempdb") ">"% DBList% "

    REM Utwórz kopię zapasową każdej bazy danych, poprzedzając nazwę pliku
    FOR / F "tokeny = *" %% I IN (% DBList%) DO (
    Baza danych tworzenia kopii zapasowych ECHO: %% I
    SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] TO Disk =" D: Kopia zapasowa% NowDate% _ %% I.bak ""
    ECHO.
    )

    REM Oczyść plik tymczasowy
    IF EXIST "% DBList%" DEL / F / Q "% DBList%"

    ENDLOCAL

    Zakładając, że data to 1/13/2009 i masz 3 bazy danych o nazwach "MyDB", "AnotherDB" i "DB Name with Spaces", skrypt wygeneruje 3 pliki w określonym miejscu kopii zapasowej:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Name with Spaces.bak
    • 2009-01-13_MyDB.bak

    Dostosowywanie i uruchamianie skryptu wsadowego

    Oczywiście będziesz chciał dostosować skrypt do swojego środowiska, więc oto, co musisz zrobić:

    • Jeśli ustawienia regionalne urządzenia nie są ustawione na USA, polecenie "Data / T" może nie zwrócić daty w formacie "Wto 01/13/2009". W takim przypadku zmienna NowDate nie wygeneruje pożądanego formatu i powinna zostać skorygowana. (1 miejsce)
    • Zmień "Mój serwer" na nazwę serwera SQL (dodaj nazwę instancji, jeśli dotyczy). (2 miejsca)
    • Bazy danych o nazwach "master", "model", "msdb" i "tempdb" są bazami danych dostarczanymi z programem SQL Server. Możesz dodać dodatkowe nazwy baz danych do tej listy, jeśli nie chcesz ich kopii zapasowej. (1 miejsce)
    • Zmień lokalizację kopii zapasowej z "D: Kopia zapasowa" na miejsce, w którym mają być przechowywane pliki kopii zapasowych bazy danych.

    Po dostosowaniu skryptu wsadowego zaplanuj uruchamianie go za pomocą Harmonogramu zadań systemu Windows jako użytkownik z prawami administratora, a wszystko gotowe.