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
SETLOCALREM 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 - %% CREM 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:
Oczywiście będziesz chciał dostosować skrypt do swojego środowiska, więc oto co musisz zrobić:
Po dostosowaniu skryptu wsadowego zaplanuj uruchamianie go za pomocą Harmonogramu zadań systemu Windows jako użytkownik z uprawnieniami administratora i wszystko jest ustawione.