En los casos que necesitemos realizar una tranferencia de Paquetes de Integration Services de un equipo a otro, el siguiente Script muestra como hacerlo.
Hay que tener en cuenta, de que este script, se debe ejecutar desde el servidor de Origen de los paquetes, caso contrario, no funiona.
Esto solo funciona con SQL Server 2005, no con versiones superiores.
Para SQL Server 2008, revisar el siguiente post: http://wp.me/p10Ka6-3b
DECLARE @srcServer as VARCHAR(24) -- Source server name DECLARE @destServer VARCHAR(24) -- Destination server name DECLARE @srcUser VARCHAR(24) -- SQL Server login used to connect to the source server DECLARE @srcPassword VARCHAR(24) -- Password of the SQL Server login on the source server DECLARE @destUser VARCHAR(24) -- SQL Server login used to connect to the destination server DECLARE @destPassword VARCHAR(24) -- Password of the SQL Server login on the destination server DECLARE @SQL VARCHAR(4096) SET @destServer = 'SERVER2' SET @srcServer = 'SERVER1' SET @srcUser = '' SET @srcPassword = '' SET @destUser = '' SET @destPassword = '' DECLARE curExecSQL Cursor FOR -- Copy SSIS packages select 'EXEC [master].[sys].[xp_cmdshell] ''dtutil /Quiet /COPY SQL;' + case foldername when '' then '"' + [name] + '"' else '"' + foldername + '\' + [name] + '"' end + ' /SQL ' + case foldername when '' then '"' + [name] + '"' else '"' + foldername + '\' + [name] + '"' end + ' /SOURCESERVER ' + @srcServer + case @srcUser when '' then '' else ' /SourceUser ' + @srcUser + ' /SourcePassword ' + @srcPassword end + ' /DESTSERVER ' + @destServer + case @destUser when '' then '' else ' /DestUser ' + @destUser + ' /DestPassword ' + @destPassword end + '''' from msdb.dbo.sysdtspackages90 pkg join msdb.dbo.sysdtspackagefolders90 fld on pkg.folderid = fld.folderid OPEN curExecSQL Fetch NEXT FROM curExecSQL INTO @SQL WHILE @@FETCH_STATUS = 0 BEGIN PRINT 'Executing' + CHAR(10) + @SQL + CHAR(10) + '---------------' EXEC(@SQL) FETCH NEXT FROM curExecSQL INTO @SQL END CLOSE curExecSQL DEALLOCATE curExecSQL GO
Otra forma de probar esta ejecución, es tomar un paquete como ejemplo y transferirlo desde el Qwery Analizer.
EXEC [master].[sys].[xp_cmdshell] 'dtutil /Quiet /COPY SQL;"ADS_Dynamic_Site_Creative" /SQL "ADS_Dynamic_Site_Creative" /SOURCESERVER LEGOLAS\DBSAFA3001 /SourceUser sa /SourcePassword PassStrong /DESTSERVER 192.168.1.101 /DestUser sa /DestPassword PassStrong'