Создание пакета служб SSIS с 4 шагами.
Во-первых, задача «Выполнение SQL», которая создает резервные копии всех БД в определенном месте:
exec sp_msforeachdb '
IF DB_ID(''?'') > 4
Begin
BACKUP DATABASE [?] TO DISK = N''\\Backups\?.BAK'' WITH NOFORMAT, INIT,
NAME = N''?-Full Database Backup'', SKIP, NOREWIND, NOUNLOAD
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N''?''
and backup_set_id=(select max(backup_set_id) from msdb..backupset
where database_name=N''?'' )
if @backupSetId is null begin
raiserror(N''Verify failed. Backup information for database ''''?'''' not found.'', 16, 1)
end
RESTORE VERIFYONLY FROM DISK = N''\\Backups\?.BAK'' WITH
FILE = @backupSetId, NOUNLOAD, NOREWIND
End
'
Во-вторых, создайте SP для восстановления БД, используя переменную для местоположения и имени БД:
CreatePROCEDURE [dbo].[uSPMas_RestoreDB] @DBname NVARCHAR(200),
@BackupLocation NVARCHAR(2000)
AS
BEGIN
SET nocount ON;
create table #fileListTable
(
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
[Type] char(1),
FileGroupName nvarchar(128),
Size numeric(20,0),
MaxSize numeric(20,0),
)
insert into #fileListTable EXEC('RESTORE FILELISTONLY FROM DISK = '''+@BackupLocation+@dbname+'.bak''')
Declare @Dname varchar(500)
Set @Dname = (select logicalname from #fileListTable where type = 'D')
Declare @LName varchar(500)
Set @LName = (select logicalname from #fileListTable where type = 'L')
declare @sql nvarchar(4000)
SET @SQL = 'RESTORE DATABASE ['+ @dbname +'] FROM
DISK = N'''+@BackupLocation + @dbname +'.BAK'' WITH FILE = 1,
MOVE N'''+ @Dname +''' TO N''E:\YourLocation\'+ @dbname +'.mdf'',
MOVE N'''+ @LName +''' TO N''D:\Your2ndLocation\'+ @dbname +'_log.ldf'',
NOUNLOAD, REPLACE, STATS = 10'
exec sp_executesql @SQL
drop table #fileListTable
END
В-третьих, создайте контейнер цикла ForEach и поместите оператор Execute Sql с переменной:
EXEC uSPMas_RestoreDB ? , ?
Используйте контейнер цикла ForEach для передачи переменных
В-четвертых, создайте задачу «Передача имен входа» для перемещения по всем именам входа в БД.