Prevent parellel execution of SSIS package

Posted on 2011-04-20
Last Modified: 2013-03-13
We have a SSIS package that we need to prevent from being run more than once at any given time.  The package can be executed sequentially, but cannot be executed in parallel.  It doesn't matter how the package is called, if an instance of the package is already executing the next time execution is triggered it needs to either, wait (queue up the execution) or return an error that execution is already in progress.

We need some way of enforcing this.

The package can be called from multiple sources:
Triggered from a web application
Called directly from SQL Server
Question by:mrichmon
    LVL 5

    Accepted Solution

    You can track it in a database table. When you start processing the package set a flag  (say  "IsRunning")  in database and once you finish running reset it. Also be carefully handle the flag on exceptions.
    LVL 9

    Expert Comment

    There is a property called "MaxConcurrentExecutables" for a package.

    For more info
    LVL 35

    Author Comment


    Yes that is the only way we came up with so far too...  Thanks for the suggestion.

    That sounded neat, but reading the article it limits concurrent tasks within a package - not concurrent executions of the entire package....
    LVL 42

    Expert Comment

    you probably needf to change the way how you call the ssis pack
    you can try to wrap it as .NET application
    and try to get GUID, and or logging to check if status is running , etc

    Execute Package Task

    Integration Services: Performance Tuning Techniques

    LVL 35

    Author Comment


    >>you probably need to change the way how you call the ssis pack
    We need a solution that is independent of how the package is called

    The links you posted are for tuning a package - the package is fine - it just can't be run more than once at a time based on the resources it needs to use.  We want the second execution to either a) queue up the request to run and run once the previous package run is complete or b) report back an error as in "can't be called now, please try again"

    For some reason, locking resources isn't sufficient - they are locked and when the second execution tries to access them it hangs up the first execution - instead of just the second one not working or timing out...

    So we need to actually prevent the second, third, etc. calls until the prior one is complete.

    The only thing we came up with is like jijeesh mentioned, having the package run status in a table.  Then the first step of the package is to read that table to find out if it is "okay" to run.  This prevents the multiple run, but would have to return the error - we aren't sure how to use that technique to queue up the request to run...

    As a note, this package takes about 40 minutes to run in one configuration (that goes nightly) and about 2 minutes to run during all other calls (on a much smaller population).  It is more a concern of queuing the short runs - since those are user triggered, the nightly run is scheduled...


    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    What Is Threat Intelligence?

    Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

    Let's review the features of new SQL Server 2012 (Denali CTP3). It listed as below: PERCENT_RANK(): PERCENT_RANK() function will returns the percentage value of rank of the values among its group. PERCENT_RANK() function value always in be…
    SQL Server engine let you use a Windows account or a SQL Server account to connect to a SQL Server instance. This can be configured immediatly during the SQL Server installation or after in the Server Authentication section in the Server properties …
    Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.
    Viewers will learn how to use the SELECT statement in SQL and will be exposed to the many uses the SELECT statement has.

    759 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    10 Experts available now in Live!

    Get 1:1 Help Now