【问题标题】:tsql not firing (stored procedure via ssis) - SQL Server 2012tsql 未触发(通过 ssis 的存储过程) - SQL Server 2012
【发布时间】:2015-07-06 07:33:04
【问题描述】:

我创建了许多存储过程之一作为 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 万行。

有什么建议吗?

【问题讨论】:

  • 可能看起来像一个愚蠢的问题,但连接管理器的用户是否对查询中的所有对象都具有权限?你也可以把它变成它自己的数据流。至少它可以让您看到正在传输的数据。
  • 嗨,David,是的,是一个通过凭据和代理对数据库具有几乎完全权限的帐户。不过,如果是权限问题,我希望会引发错误。
  • 可能需要分号吗?我有一个带有 try catch 的程序。许多 IF 语句和大约 10 次插入和更新。问题是,“:”去哪里了?在每一行上?例如如果@x = 1;开始;设置@y = 2;结尾;插入 x(字段)值@y;等等?似乎没有这方面的标准
  • SQL Server 不需要分号来处理这些事情。他们不会有任何影响。 Raymondo,您是否尝试过用数据流替换存储过程?您的插入将非常适合一个。我意识到它没有回答为什么 SP 不起作用的问题,但它应该为该问题提供一个可行的解决方案。

标签: stored-procedures sql-server-2012 ssis-2012


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我不知道是什么原因造成的,但是我将特定的 SQL 移到另一个存储过程中并且它起作用了。实际上,它有权在自己的存储过程中,因为它与所讨论的过程仅半相关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多