如何从 Informatica Developer(10.1,不是 Power Center)执行 SQL 服务器存储过程

How do I execute a SQL Server stored procedure from Informatica Developer (10.1, not Power Center)

我正在尝试执行(调用)来自 Infa Developer 的 SQL 服务器存储过程,我创建了一个映射(来自 SQL 查询的新映射)。我正在尝试将先前映射任务中的运行时变量传递给它,以便将这些变量记录到 SQL 服务器 table(存储过程执行 INSERT)。它生成了以下 T-SQL 查询:

?RETURN_VALUE? = call usp_TempTestInsertINFARunTimeParams (?Workflow_Name?, ?Instance_Id?, ?StartTime?, ?EndTime?, ?SourceRows?, ?TargetRows?)

但是,它没有验证,验证日志指出 'the mapping must have a source' 和“...必须有一个目标”。我有一种感觉,我做这件事完全错了。并且:这不是 Power Center(据我所知,没有会话)。

感谢任何帮助!谢谢

现在有了评论,我可以确认并回答你的问题:

是的,Informatica 中的源和目标转换是映射的必需元素。没有它们就不是有效的映射。让我再解释一下。

ETL 工具的整个概念是从源中提取数据,在数据库外部执行所有需要的转换并将数据加载到所需的目标。在数据加载之前或之后调用存储过程是可能的——而且通常是必要的。有时甚至使用现有的存储过程作为数据加载的一部分。但是,从 ETL 的角度来看,这是附加功能。 ETL 工具——这里的 Informatica 是一个完美的例子——并不意味着是调用 SP 的工具。这让我想起任何 T-SQL 开发人员在他的第一个 PL-SQL 查询中都会问的一个问题:这个 DUAL 到底是什么?如果我只是想做一些像 SELECT 123*456 这样的计算,为什么我需要 'from dual'?这就是理论。

在现实世界中,您经常需要调用存储过程。而且这是您唯一需要做的事情。然后你确实使用了 DUAL ;) 在 PowerCenter 世界中这意味着你使用 DUAL 作为源(或者实际上你知道源系统中存在的任何 table),你把 1=2 放在 Source Filter 属性(或者把Filter Transforation放在以FALSE为条件的映射中),link只是一个端口与目标。接下来,将 Stored Procedure 调用作为 Pre- 或 Post-SQL 属性 放在源或目标上 - 取决于您实际想要 运行 的位置.

奇怪?好吧 - 奇怪的是你想使用 ETL 工具作为触发器,而不是 ETL 工具 ;)