If-Koubou

Skrypt wsadowy do tworzenia kopii zapasowych wszystkich baz danych SQL Server

Skrypt wsadowy do tworzenia kopii zapasowych wszystkich baz danych SQL Server (Jak)

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 prawdziwym stylu "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 [Name] 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 wytworzy wymaganego 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" to bazy danych dostarczane z programem SQL Server. Możesz dodać dodatkowe nazwy baz danych do tej listy, jeśli nie chcesz ich tworzyć. (1 miejsce)
  • Zmień lokalizację kopii zapasowej z "D: Kopia zapasowa" na miejsce przechowywania plików kopii zapasowych bazy danych.

Po dostosowaniu skryptu wsadowego zaplanuj uruchamianie go za pomocą Harmonogramu zadań systemu Windows jako użytkownik z uprawnieniami administratora i wszystko jest ustawione.