Informatica 中的事务控制转换允许您控制转换中的事务。例如,使用此事务控制转换,您可以提交或回滚通过它的记录(或行)。
对于此事务控制转换示例,我们将使用 SP 源表和目标表。

Informatica 事务控制转换示例
在此示例中,我们将向您展示如何使用事务控制转换来执行回滚事务。在开始配置之前,请允许我连接到存储库服务。
为此,我们需要提供管理控制台凭据。因此,请提供您在安装服务器时指定的用户名和密码。
提示:我们已在SQL 事务文章中解释了有关事务及其功能的全部内容。
Informatica 事务控制转换的源定义
成功连接后,请导航到源分析器并定义您的源。在此事务控制转换示例中,我们将 SQL Server 数据库中的 Sp Source 表作为我们的源定义。请参考数据库源了解创建Informatica源定义所涉及的步骤。

创建目标定义
请导航到目标设计器来定义目标。在此 Informatica 事务控制转换示例中,我们将现有的 SQL 表(SP Destination)作为我们的目标定义。您可以参考创建目标表来了解创建目标定义的过程。

创建映射
要为 Informatica 事务控制转换创建新映射,请导航到菜单栏的“映射”菜单,然后选择“创建..”选项。

选择“创建..”选项后,将打开一个新的映射名称窗口。我将提供 m_Transaction 作为映射名称,然后单击“确定”按钮。

将 SP Source 从“源”文件夹拖放到映射设计器。拖动源后,Power Center Designer将自动为您创建源限定符转换(默认转换)。

创建 Informatica 事务控制转换
要创建事务控制,请导航到菜单栏中的“转换”菜单。接下来,选择“创建..”选项。

选择“创建..”选项将打开“创建转换”窗口。请从下拉列表中选择 Informatica 事务控制转换,提供一个唯一的名称(Tran_Employee),然后单击“创建”按钮。

单击“确定”将为您创建事务控制转换。

让我将源定义中的所有字段拖到事务控制转换中。接下来,将目标定义(SP Destination)从“目标”文件夹拖放到映射设计器。使用“自动链接..”选项将事务控制转换字段与目标定义连接起来。

双击事务控制转换以编辑或配置转换。接下来,请转到“属性”选项卡,然后单击“事务控制条件”旁边的箭头以在映射级别应用事务。

单击箭头后,将打开一个表达式窗口。事务控制转换中的表达式窗口使用IIF 函数来测试每一行是否符合条件。
Informatica 事务控制转换提供以下内置变量来应用事务。出于演示目的,让我们以上面的 SP Source 表为例,条件是 EmpID = 5。
- TC_CONTINUE_TRANSACTION:这是此选项的默认值。它不会对该行执行任何更改。
- TC_COMMIT_BEFORE:这相当于任何关系数据库中的提交事务。如果条件为真,它将首先提交事务。接下来,它将开始一个新事务并写入当前行。示例:它将提交 EmpID 4 及之前的记录,并开始一个新事务来提交从 5 开始的记录。
- TC_COMMIT_AFTER:如果条件为真,它将首先写入当前行然后提交事务。接下来,它将开始一个新事务。示例:它将提交 EmpID 5 及之前的记录,并开始一个新事务来提交从 6 开始的记录。
- TC_ROLLBACK_BEFORE:这相当于任何关系数据库中的回滚事务。如果条件为真,它将首先回滚事务。接下来,它将开始一个新事务并写入当前行。示例:它将回滚 EmpID 4 及之前的记录,并开始一个新事务来提交从 5 开始的记录。
- TC_ROLLBACK_AFTER:如果条件为真,它将首先写入当前行然后回滚事务。接下来,它将开始一个新事务。示例:它将回滚 EmpID 5 及之前的记录,并开始一个新事务来提交从 6 开始的记录。

单击“应用”,然后单击“确定”关闭 Informatica 事务控制转换窗口。

在关闭映射之前,让我们通过转到“映射”菜单栏并选择“验证”选项来保存和验证映射。
创建 Informatica 事务控制转换的工作流
完成事务控制转换映射的创建后,我们需要为其创建工作流。PowerCenter Workflow Manager 提供两种创建工作流的方法。
在此事务控制转换示例中,我们将手动创建工作流。为此,请导航到“工作流”菜单并选择“创建”选项。
这将打开“创建工作流”窗口。请提供唯一的名称(wf_Transaction)并保留默认设置。

创建完工作流后,下一步是为我们的映射创建会话任务。
为 Informatica 事务控制转换创建会话
有两种类型的会话
对于此 Informatica 事务控制转换示例,我们创建了一个非可重用会话。要创建非可重用会话,请导航到“任务”菜单并选择“创建”选项,如下所示。
这里,我们将此会话命名为 s_Transaction。单击“创建”按钮后,将打开一个新的映射窗口。选择您要与此会话关联的映射(m_Transaction)。

双击会话任务,这将打开“编辑任务”窗口。接下来,我们必须在“映射”选项卡中配置源和目标连接。
首先,让我们通过单击“源”文件夹中存在的 SQ_SPSource 源来配置源连接。在“连接”中,单击“关系型”类型旁边的箭头按钮,然后选择数据库对象(数据库名称),即源。

现在,我们必须配置目标连接。因此,单击“目标”文件夹中存在的 SPDestination。在“连接”中,单击“关系型”类型旁边的箭头按钮,然后选择数据库对象(目标数据库名称),即目标。

请根据您的要求将目标加载类型更改为“正常”或“批量”。我也将勾选“截断目标表”选项。

接下来,导航到“工作流”菜单并选择“验证”选项以验证工作流。

现在,让我们开始 Informatica 事务控制转换工作流。为此,请导航到“工作流”菜单并选择“启动工作流”选项。

让我们打开SQL Server Management Studio并编写以下SQL查询,以检查我们是否已成功从源传输数据。正如您所看到的,我们的目标表显示了 EmpID = 10 的记录。因为回滚将在处理 EmpID 为 10 的记录之前开始。
这次我们将使用 TC_ROLLBACK_AFTER 作为 IIF 的第二个参数。这意味着回滚选项将在 EmpID 10 之后执行。

正如您所看到的,我们的目标表显示了 EmpID 大于 10 的记录。
