Резервное копирование в SSIS с использованием переменной db name - PullRequest
0 голосов
/ 06 мая 2020

У меня есть поток SSIS, который создает базу данных из переменной (и изменяет несколько параметров).

Теперь мне нужно создать первоначальную резервную копию этой базы данных (а затем добавить ее в резервную копию) plan).

Спросите: Как мне использовать переменную, которую я использовал для создания базы данных, чтобы также запустить начальное резервное копирование? (Я пытаюсь использовать задачу резервного копирования ... но если задача Execute SQL лучше, я открыт для этого.)

1 Ответ

0 голосов
/ 06 мая 2020

Предполагая, что у вас есть переменная SSIS с именем @[User::DatabaseName]

Учитывая, что команда резервного копирования будет выглядеть примерно как

BACKUP DATABASE [MyDB] TO DISK = N'\\Server\backup\MyDB\MyDB_backup_2020_05_06_020003.bak' WITH NOFORMAT,
NOINIT,  
NAME = N'MyDb-Full Database Backup', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10

, я бы создал переменные SSIS.

@[User::BackupTimestamp] строковое выражение, например

(DT_WSTR, 4) YEAR(@[System::StartTime])
+ "_"
+ RIGHT("0" + (DT_WSTR, 2) MONTH(@[System::StartTime]), 2)
+ "_"
+ RIGHT("0" + (DT_WSTR, 2) DAY(@[System::StartTime]), 2)
+ "_"
... repeat the above pattern to slice out hours, minutes, seconds into 2 digit entities

Цель этого состоит в том, чтобы сгенерировать строковое представление времени начала пакета с требуемым уровнем точности времени / даты наши резервные копии.

@[User::BackupCommand] Это будет объединено из других переменных для построения правильной команды T SQL.

"BACKUP DATABASE [" 
+ @[User::DatabaseName] 
+ "] TO DISK = N'\\\\double\\escape\\slashes\\" 
+ @[User::DatabaseName] 
+ "\\" + @[User::DatabaseName] 
+ "_" + @[User::BackupTimestamp]
+ ".bak WITH NOFORMAT, NOINIT, NAME= N'" 
+ @[User::DatabaseName] 
+ "-Full Database Backup', SKIP, NOREWIND, STATS=10;"

Как видите, косые черты немного боли, поскольку вы должны удвоить их внутри выражений. Обычно я создаю переменную с именем BackupPath, которая упрощает этот бит.

Возьмите сгенерированную команду, запустите ее через SSMS, и если она работает, вы можете просто подключить SqlCommand / Text (приблизительное имя свойства) к эта переменная.

Что касается «добавить в план резервного копирования», я не знаю, какой план использует ваша организация. Я поклонник всего, что создает резервные копии любой найденной базы данных, поскольку механическое добавление чего-либо в процесс - это шаг, который будет пропущен в самый неподходящий момент. Скрипты резервного копирования Олы, Minionware и др. c

...