Пакетний скрипт для резервного копіювання всіх баз даних SQL Server
Ми вже розглянули, як створити резервну копію бази даних SQL Server з командного рядка, так що якщо ви хочете зробити резервну копію всіх ваших баз даних одночасно? Можна створити пакетний сценарій, який запускає команду резервного копіювання для кожної бази даних, але цей скрипт потрібно було оновлювати кожного разу, коли базу даних буде додано або видалено. Крім того, всі резервні копії баз даних будуть додані до одного файлу, який збільшуватиметься за розміром нової резервної копії кожного разу під час її запуску. Замість цього, в моді "встановити його і забути" ми створимо пакетний скрипт, який буде адаптований до вашого SQL Server, оскільки нові бази даних будуть додані і видалені.
Щоб перейти до точки, це сценарій резервного копіювання:
@ECHO OFF
SETLOCALREM Отримати дату у форматі YYYY-MM-DD (припускає, що мова є США)
FOR / F "маркери = 1,2,3,4 delims = /" %% A IN ('Date / T') УСТАНОВИТИ NowDate = %% D - %% B - %% CREM Створення списку баз даних для резервного копіювання
SET DBList =% SystemDrive% SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q “SET NoCount ON; Ім'я SELECT FROM master.dbo.sysDatabases WHERE [Ім'я] NOT IN ("master", "model", "msdb", "tempdb") ">"% DBList% "REM Створюйте резервну копію кожної бази даних, додаючи дату до назви файла
FOR / F "маркери = *" %% I IN (% DBList%) DO (
ECHO Резервне копіювання бази даних: %% I
SqlCmd -E -S MyServer -Q “BACKUP DATABASE [%% I] TO Disk =" D: Резервне копіювання% NowDate% _ %% I.bak ""
ECHO.
)REM Очищення тимчасового файлу
IF EXIST "% DBList%" DEL / F / Q "% DBList%"ENDLOCAL
Припускаючи, що дата є 1/13/2009, і у вас є 3 бази даних з назвою "MyDB", "AnotherDB" і "Ім'я БД з пробілами", сценарій створить 3 файли у вказаному місці резервного копіювання:
- 2009-01-13_AnotherDB.bak
- 2009-01-13_DB Ім'я з Spaces.bak
- 2009-01-13_MyDB.bak
Налаштування та запуск сценарію пакетної обробки
Звичайно, ви захочете налаштувати сценарій у вашому середовищі, так що вам потрібно зробити так:
- Якщо локалі вашої машини не встановлено в США, команда "Date / T" може не повернути дату у форматі "Tue 01/13/2009". Якщо це так, змінна NowDate не дасть потрібного формату і має бути скоригована. (1 місце)
- Змініть "MyServer" як назву вашого SQL Server (додайте ім'я екземпляра, якщо можливо). (2 місця)
- Бази даних, що називаються 'master', 'model', 'msdb' і 'tempdb' є базами даних, які постачаються з SQL Server. Ви можете додати додаткові назви баз даних до цього списку, якщо ви не хочете, щоб їх резервне копіювання. (1 місце)
- Змініть місце резервного копіювання з "D: Резервне копіювання" на місце, де потрібно зберігати резервні файли бази даних.
Після того, як ви налаштували пакетний сценарій, заплануйте його запуск за допомогою планувальника завдань Windows як користувача з правами адміністратора, і ви все налаштовано.