/ / 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ż, jak wykonać kopię zapasową SQLBaza danych serwera z wiersza poleceń, 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 jest dodawana lub usuwana. Ponadto kopie zapasowe bazy danych zostaną dołączone do jednego pliku, który będzie powiększany o rozmiar nowej kopii zapasowej przy każdym uruchomieniu. Zamiast tego, zgodnie z zasadą „ustaw i zapomnij”, stworzymy skrypt wsadowy, który dostosuje się do Twojego SQL Servera w miarę dodawania i usuwania nowych baz danych.

Aby przejść do sedna, oto skrypt kopii zapasowej:

@ECHO OFF
SETLOCAL

REM Uzyskaj datę w formacie RRRR-MM-DD (zakładając, że lokalizacją są Stany Zjednoczone)
FOR / F „tokenów = 1,2,3,4 delims = /” %% A IN („Date / T”) DO USTAWIEŃ NowDate = %% D - %% B - %% C

REM Zbuduj listę baz danych do kopii zapasowej
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q „USTAW NoCount WŁ; WYBIERZ Nazwa Z master.dbo.sys Bazy danych GDZIE [Nazwa] NIE WEJŚCIE („master”, „model”, „msdb”, „tempdb”) ”>„% DBList% ”

REM Utwórz kopię zapasową każdej bazy danych, dodając datę do nazwy pliku
FOR / F „tokeny = *” %% I IN (% DBList%) DO (
ECHO Tworzenie kopii zapasowej bazy danych: %% I
SqlCmd -E -S MyServer -Q „BACKUP DATABASE [%% I] TO Disk =’ D: Backup% NowDate% _ %% I.bak '”
ECHO.
)

REM Oczyść plik tymczasowy
JEŚLI ISTNIEJE „% DBList%” DEL / F / Q „% DBList%”

ENDLOCAL

Zakładając, że data jest 1/13/2009 i masz 3 bazy danych o nazwie „MyDB”, „AnotherDB” i „DB Name with Spaces”, skrypt wygeneruje 3 pliki w określonej lokalizacji kopii zapasowej:

  • 2009-01-13_AnotherDB.bak
  • 2009-01-13_DB Nazwa z 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 Twojego komputera nie są ustawione na USA,polecenie „Data / T” może nie zwrócić daty w formacie „Wt 01/13/2009”. W takim przypadku zmienna NowDate nie wygeneruje pożądanego formatu i powinna zostać dostosowana. (1 miejsce)
  • Zmień „MyServer” na nazwę swojego SQL Server (w razie potrzeby dodaj nazwę instancji). (2 miejsca)
  • Bazy danych o nazwach „master”, „model”, „msdb” i„Tempdb” to bazy danych dostarczane z SQL Server. Możesz dodać dodatkowe nazwy baz danych do tej listy, jeśli nie chcesz, aby były tworzone kopie zapasowe. (1 miejsce)
  • Zmień lokalizację kopii zapasowej z „D: Kopia zapasowa” na lokalizację, w której chcesz przechowywać pliki kopii zapasowej bazy danych.

Po dostosowaniu skryptu wsadowego zaplanuj jego uruchamianie za pomocą Harmonogramu zadań systemu Windows jako użytkownik z uprawnieniami administratora i wszystko będzie gotowe.