Search code examples
ssissql-server-data-toolssql-server-2017ssdt-bissis-2017

SSIS 2017 - Package Parts - "P"s disappear, no longer configurable


I am using the new Control Flow Package Parts for my project, and they are hit-and-miss. Sometimes I can drag them on to my packages fine, and they work as expected; however, I have experienced the following problems, and I would like to know if these are bugs in the software:

  • Every time I reopen a package that uses package parts in the designer window, the package parts' variables are recreated, scoped only to the package parts themselves. These are duplicates of variables scoped to the parent package, and I have to delete them again every time I open the package; otherwise the package will not work. Is this intended behavior?
  • Sometimes when I drag package parts into a package, then close and reopen the package, all the P's that display in the package parts' upper-right-hand corners (to denote they are package parts) disappear, and the package parts themselves no longer are configurable. To make them configurable again, I need to delete them from the designer workspace, then drag them back into the package again. This is a huge pain in the butt, and I haven't been able to figure out why only some packages behave this way and not all.

  • Any and all expression-based precedence constraints attached to these package parts disappear the moment I close and reopen the package. This is deadly, because I have precedence constraints on things like updating the database that I only want to happen under certain conditions; reopening the package makes it so that everything runs no matter what.

Are there steps I can take to prevent these behaviors? Package parts are great for reusability, but I am running into these errors over and over, and they are driving me crazy. I am assuming these are bugs, but asking the question in case there is a possibility of user error.


Solution

  • Was able to connect with MS support and got some answers:

    1. You don't need to assign variables at the package part level, even if you're using a Script Task that requires ReadOnly/ReadWriteVariables declared. Instead, declare the variables in the Package itself, then assign them to the Package Part by using the Package Part Configuration Dialog (opens when you double-click a Package Part inside a Package).
    2. The disappearing P's on the package parts were due to a breakpoint being set inside a Script package part. Deleting the breakpoint in that one package part fixed all the package parts in the package.
    3. Expression-based precedence constraints cannot be assigned between package parts by design. If you wrap the package part(s) inside Sequence Containers, the expression remains and is not deleted once the package is closed.