Предполагая, что у вас есть переменная 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