January 29, 2007 at 7:51 am
I have over 100 DTSs that need to be copied to the same server with a new name. Is there a easy way to do this other than bringing each dts up and resaving it under the new name? All the dts packages are prefixed with DTS4_ needs to be copied to DTS9_CDJ_.
January 30, 2007 at 9:13 am
The only way I can think to change a lot of package names at once, and I'm not sure I'd want to try it, is to update the name column in sysdtspackages and sysdtspackagelog tables in msdb.
Greg
Greg
January 30, 2007 at 9:20 am
Updating the name is not what I want. I need to COPY the DTSs from DTS4_ to DTS9_CDJ_. The key to sysdtspackage is NOT name, but id and version id.
January 30, 2007 at 10:03 am
January 30, 2007 at 1:51 pm
I have used DTS Backup2000 to copy the packages to another server without issues. I am sure this will work with the local instance as the target.
February 1, 2007 at 9:45 am
I've used DTS Backup2000 also, but I haven't been able to copy a package to a new name.
Greg
Greg
February 8, 2007 at 3:02 pm
I've got some old code I used to move packages with.
It was originally designed to move DTSs across servers...but I've modified it for your name change.
It moves one package (slowly). You can use a script to produce a hundred EXEC statements based on the packages...or modify it to move all packages in one execution of the proc.
I tested it locally and was able to successfully open the package created (I didn't run it)
/*exec dbo.MoveDTS 'LocalServer','DB2 Test Package','newowner'
*/
ALTER proc dbo.MoveDTS (
@sourceserver varchar(40),@dtsname varchar(500),
@owner varchar(30)
@newDTSname varchar(500)
)
as
declare @sql varchar(2000)
declare @dtsid uniqueidentifier
set @SQL= 'Select d.*,l.[name] as loginame into ##sysdtspackages from '+ @sourceserver + '.msdb.dbo.sysdtspackages d join '+@sourceserver+'.master.dbo.sysxlogins l on d.owner_sid=l.sid'
execute(@SQL)
Select @dtsid=[id] from ##sysdtspackages where [name] like @dtsname + '%'
set @SQL= 'Select * into ##sysdtscategories from '+ @sourceserver + '.msdb.dbo.sysdtscategories where [id]=''' +cast( @dtsid as varchar(2000))+''''
execute(@SQL)
table ##sysdtspackages
--Keys here are that you need a newid() to replace the version ID...and you need to pass a valid SID for the owner.
INSERT INTO msdb.dbo.[sysdtspackages] Select @newDTSname, [id], newid(), [description], [categoryid], [createdate], @owner, [packagedata], (Select sid from master.dbo.sysxlogins where [name]=@owner),0 as packagetype/*, [packagetype]*/ from ##sysdtspackages s where s.id = @dtsid
Drop table ##sysdtscategories
Drop Table ##sysdtspackages
GO
Hope this helps.
Viewing 7 posts - 1 through 6 (of 6 total)
You must be logged in to reply to this topic. Login to reply