Welcome to EMC Consulting Blogs Sign in | Join | Help

SSIS Junkie

SSIS: New suggestion for templates in Katmai

I have raised a suggestion on Connect for a change to the current behaviour of SSIS templates. Here are the details:

 

Description:

When you use template packages you run into problems. Mainly because all of the packages created from the same template have the same properties. The worst case being that the ID of the packages are all the same.
This is bad - very very bad.

At the moment a SSIS template isn't really a template per se. Its just a package that happens to reside in a particular place. If it were a proper template then many of the properties of that package would get changed as if the package were getting created for the first time.

 

Proposed Solution:

I would like a new method on the Application class (http://msdn2.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.application_members.aspx) or perhaps a new overload of the Application.LoadPackage method (http://msdn2.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.application.loadpackage.aspx) that opens an existing package but also does a few extra things:
1) Loops over the executables collection and recreates all of the ID properties.
2) Changes the ID of the package.
3) Requires the user to specify a new name for the package.
4) Change CreatorName, CreatorComputer, CreationDate properties accordingly.
5) Resets the Description property to some default value.
6) Resets Major/Minor/Build version numbers to 1.0.0
7) Sets PackageType property to an appropriate value (e.g. If a template designed in Yukon were to get opened in katmai then current behaviour is that PackageType=DTSDesigner90.

If you think that this is a good idea then please click-though here and vote. The current behaviour, whilst not being a bug, is not intuitive and needs changing.

Thanks

-Jamie

Posted to SSIS (RSS feed)

Published 15 May 2007 20:34 by jamie.thomson

Comments

 

Richard said:

Hi Jamie, I'm running into a lot of problems with the problem of duplicate object IDs across multiple packages that are run in parallel. I use package "template" (copy and paste) but am now in a lot of trouble because of the duplicate object IDs and the cross-talk issues that arise as a result. I essentially have to run the child packages in series now.

Have you ever found an effective way of regenerating new object IDs in a package that you copy from your template? I've tried several methods but I can't seem to find any easy way.

May 19, 2007 13:59
 

Jonathan Butler said:

I trust that the <Generate New ID> option in the ID field of the SSIS Package Properties Tab, has a few problems?

This is what I was going to use to generate ID's for new Template instances.

Please let me know if this just isn't going to work!!!!

May 23, 2007 11:20
 

jamie.thomson said:

Jonathan,

yes, it works fine. The point is that you shouldn't need to use that. It should generate a new ID automatically.

let's be honest - did you know about the ability to Generate a New ID or the need to do it on day one?

-Jamie

May 23, 2007 11:24
 

Richard said:

Actually, for me it doesn't work. There's a big danger associated with creating template SSIS packages and copying-and-pasting them. Although it's easy to assign the package a new ID, it's no so easy to assign the objects within the package new IDs. If these copied packages are called in parallel from a master package, there can be some serious problems (like the ones I'm having.)

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=882067&SiteID=1

May 23, 2007 13:09
 

jamie.thomson said:

Richard,

Apologies for missing your earlier posting. I'm on holiday at the moment and am kinda deluged in unanswered email!!

You're right - its a huge problem. And is the main reason that I want to make the changes that I have proposed above. When I said "yes, it works fine" to Jonathan's post above I simply meant that 'Generate new ID' will do exactly what it says on the tin. it certainly won't solve the problems that you are having.

In answer to your earlier question - it wouldn't be too difficult that built a command-line utility that loops over all the executables in a package and resets their IDs. I would try it myself but like I say - I am on holiday :)

-Jamie

May 23, 2007 13:16
 

Xfonhe said:

Big fat workaround:

In testing I have found that c&p objects within a package automagically generates new IDs for the objects. C&p objects across packages performs in the same manner. It is only when one copies an entire package that the IDs are an exact match, down to the object level.

Workaround: cut & paste objects within a template back into itself. This results in NEW IDs for the objects. It can take a bit of time, mine you, if you have a large control flow... but it is worth the wait (when measured against spurious results).

August 14, 2007 16:43
 

Jean said:

The copy and paste workaround works well. You don't have to copy and paste each control flow item individually, you can select everything inside a package (Sequence containers, loops etc included) cut it and re-paste it.

One thing to note is that you will need to configure your package logging again as well. A neat way to test for the problem and if resolved is to set a breakpoint on one of your package components, if the copied package displays the breakpoint icon on the same component then you still have the problem, otherwise it's resolved (Or you can compare the id's). Also have a look at:

http://support.microsoft.com/kb/928323

February 13, 2008 14:49
 

Too Many Copy & Paste Operations May Confuse SSIS : Business Intelligence Blog said:

April 9, 2008 11:03
New Comments to this post are disabled

This Blog

Syndication

Powered by Community Server (Personal Edition), by Telligent Systems