I've found a bug in SSIS today (confirmed by Bob Bojanic from the SSIS team) but it shouldn't have any cause for alarm. Its a very obscure circumstance that causes it and isn't too much of a problem either. However, I thought it would be useful to share the details in case anyone else runs into it. If you never develop custom components in SSIS then read no further.
Put simply, if you are developing a component that has no editor then its possible for that component to appear invalid and the normal method of fixing it doesn't work.
Firstly, here's how you specify that a transformation component doesn't have an editor:
[DtsPipelineComponent(
DisplayName="MyComponent",
Description="Does something",
ComponentType=ComponentType.Transform,
NoEditor=true,
IconResource="MyComponentIcon.ico"
)
]
Typically a component that doesn't have an editor will derive its metadata from its input(s) during a call to ReinitialiseMetadata() and if the metadata of an input changes then the component will fail validation and the Validate() method will (probably) return VS_NEEDSNEWMETADATA. This will trigger a call to ReinitialiseMetadata() and the next time that the package developer opens the editor Validate() will be called .HOWEVER, if the component has no editor then Validate() will never get called and the component will appear invalid in the package designer even though it is not. The bug is basically that under these circumstances Validate() will never get called without abnormal user intervention (such as detaching and reattaching the input).
Follow all that? Probably not, so to make it easy you can just watch this video that I recorded for Bob in order to demonstrate the problem (the video may not display in some blog readers):
The fidelity isn't very good once its uploaded to YouTube so instead you could download the video from my Skydrive:
I have raised a bug for this here: https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=296829
My thanks to Bob for helping me out with the investigation.
-Jamie
This blog entry was authored in Live Writer where I leveraged the Skydrive Embed plug-in.