Stored procedures tsql未触发(通过ssis的存储过程)-SQL Server 2012

Stored procedures tsql未触发(通过ssis的存储过程)-SQL Server 2012,stored-procedures,sql-server-2012,ssis-2012,Stored Procedures,Sql Server 2012,Ssis 2012,我创建了许多存储过程中的一个作为ETL过程的一部分,但存储过程中的一个查询没有执行 环境是SQL Server 2012 SP2 奇怪的是- 运行“插入受影响的查询-返回行”的“选择”部分 运行“插入受影响的查询-插入行” 通过SSMS运行整个存储过程-插入行 通过SSIS运行-所有其他查询都会运行,除非有问题 我的存储过程中没有条件,例如,如果x=True,则返回,并且其中也没有调试代码,例如,返回。也没有事务,我从中读取的表是一个由数据流填充的临时表 查询: INSERT INTO Pers

我创建了许多存储过程中的一个作为ETL过程的一部分,但存储过程中的一个查询没有执行

环境是SQL Server 2012 SP2

奇怪的是-

运行“插入受影响的查询-返回行”的“选择”部分

运行“插入受影响的查询-插入行”

通过SSMS运行整个存储过程-插入行

通过SSIS运行-所有其他查询都会运行,除非有问题

我的存储过程中没有条件,例如,如果x=True,则返回,并且其中也没有调试代码,例如,返回。也没有事务,我从中读取的表是一个由数据流填充的临时表

查询:

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)
该过程有一个Try-Catch块,该Catch将引发一个错误,并且不会引发任何错误

该过程中唯一的其他非ETL代码是-

SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
但是我在这个应用程序的所有过程中都用到了这个,因为我不担心脏读,因为它们不会发生

我将tsql直接放在插入之后以写入我的审核系统,并且@RowCount为0。然而,如果我现在运行select,我将返回150多万行


有什么建议吗?

如果您使用的是执行T-SQL任务,请尝试将其替换为执行SQL任务。

我不知道是什么原因导致了它,但我将特定的SQL移动到了另一个存储过程中,它起到了作用。事实上,它完全有权位于自己的存储过程中,因为它只与所讨论的过程半相关。

这似乎是一个愚蠢的问题,但是连接管理器的用户对查询中的所有对象都有权限吗?您还可以将其转换为自己的数据流。至少它可以让你看到传输的是什么数据。你好,大卫,是的,一个通过credential和proxy在数据库上拥有几乎完全权限的帐户。如果是权限问题,我希望抛出一个错误。是否需要分号?我有一个尝试接球的程序。许多IF语句和大约10个插入和更新。问题是,这个:去哪里?每一行?e、 g.如果@x=1;开始设置@y=2;终止在x字段中插入@y的值;等等这方面似乎没有任何标准,SQL Server不需要使用分号。它们不会有任何效果。Raymondo,您是否尝试过用数据流替换存储过程?你的插页很适合做一个。我意识到这并不能回答SP为什么不工作的问题,但它应该为这个问题提供一个有效的解决方案。