talend tmssqlrow似乎没有执行事务

时间:2018-01-24 15:02:52

标签: transactions commit talend

我在Talend遇到了一份工作问题。 我使用tmssqlrow删除一些表中的大量数据(+/- 250 000 000行)。由于我有一些条件,我不能使用截断。

使用简单的选项恢复模式设置数据库。尽管如此,事务日志文件的增加仍占用磁盘的所有可用空间。

这里是代码使用:

DECLARE @RowCount int = 1, @nbocc int = 0 
WHILE @Rowcount > 0 
BEGIN 
   BEGIN TRANSACTION 

   delete TOP (100000) from large_table

   SET @Rowcount = @@ROWCOUNT;
   COMMIT TRANSACTION
   CHECKPOINT

   SET @nbocc = @nbocc + 1 
   IF @nbocc = 15 
   BEGIN    
      DBCC SHRINKFILE (N'logfile' , 0)
      WITH NO_INFOMSGS 

      SET @nbocc = 0 
   END
END

SET ROWCOUNT 0

如果在管理工作室中运行此脚本,它运行正常,因此ldf文件每15次出现缩小。但是使用Talend,ldf文件不断增长。

我如何解决这个问题? 我尝试将tOpenconnection,然后是tmssqlrow,然后是tmssqlcommit和tcloseconnection,但面临同样的问题。

提前致谢。

此致 泽维尔

1 个答案:

答案 0 :(得分:1)

从我所看到的情况来看,tMSSqlRow并不总是像sql脚本一样表现出来。您应该将脚本封装在存储过程中,然后只需从tMSSqlRowEXEC myStoredProcedure..)或tMSSqlSP组件调用存储过程。