Search code examples
stored-proceduressql-server-2012ssis-2012

tsql not firing (stored procedure via ssis) - SQL Server 2012


I've created one of many stored procedures as part of an ETL process and one of the queries within a stored procedure isn't executing.

The environment is SQL Server 2012 SP2.

The bizarre thing is this -

Run the select part of the insert (affected query) - returns rows

Run the insert (affected query) - inserts rows

Run the whole stored procedure via SSMS - inserts rows

Run via SSIS - all other queries run barring the one of concern!

There are no conditions in my stored procedure e.g. if x = True the Return and no debug code is in there either e.g. return. There are also no transactions and the table I am reading from is a staging table populated prveiously by a data flow.

The query:

INSERT INTO Person.CustomerLinks 
            (PersonID, SystemID, CustomerID_bin, CustomerActive)
SELECT      i.PersonID
,           s.SystemDefID
,           i.CustomerID_bin
,           0
FROM        Staging.IdentifyOutput  i
JOIN        Config.SystemDef        s   ON  s.OutputType        = i.OutputType
WHERE       i.CustomerID_bin    IS NOT NULL
AND         i.OutputType        IN ('L', 'X')
AND         i.PersonID          > 0
AND         i.FileDuplicate     = 1
AND         i.PreferredRecord   = 1
AND         NOT EXISTS (    SELECT  1 
                            FROM    Person.CustomerLinks cl 
                            WHERE   cl.PersonID         = i.PersonID
                            AND     cl.CustomerID_bin   = i.CustomerID_bin)

The procedure has a Try Catch block and the Catch will raise an error and no error is raised.

The only other non ETL code in the procedure is -

SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

But I put this in all of my procedures in this application as I am not concerned about dirty reads as they won't happen.

I placed tsql directly after the insert to write to my audit system and @@RowCount was 0. Yet if I run the select now I get over 1.5 million rows back.

Any suggestions?


Solution

  • I don't know what caused it, but I moved the specific SQL into another stored procedure and it worked. In reality, it warranted being in its own stored procedure by right as it was only semi related to the procedure in question.