Talend tmssqlrow 似乎没有执行事务
Talend tmssqlrow seems not execute transaction
我在 Talend 工作时遇到问题。
我使用 tmssqlrow 删除某些表中的大量数据(+/- 250 000 000 行)。由于我有一些条件,我不能使用 t运行cate.
数据库设置为简单恢复模式选项。尽管如此,事务日志文件的增加仍然占用磁盘中的所有空闲 space。
这里是代码使用:
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
如果在 Management Studio 中使用 运行 这个脚本,它工作正常,所以 ldf 文件每出现 15 次就会收缩一次。但是与Talend一起使用,ldf文件不断增长。
我该如何解决?
我尝试放置一个 tOpenconnection,然后是 tmssqlrow,然后是 tmssqlcommit 和 tcloseconnection,但面临同样的问题。
据我所见,tMSSqlRow
并不总是按预期使用 sql 脚本。您应该将脚本封装在存储过程中,然后从 tMSSqlRow
(EXEC myStoredProcedure..
) 或 tMSSqlSP
组件调用存储过程。
我在 Talend 工作时遇到问题。 我使用 tmssqlrow 删除某些表中的大量数据(+/- 250 000 000 行)。由于我有一些条件,我不能使用 t运行cate.
数据库设置为简单恢复模式选项。尽管如此,事务日志文件的增加仍然占用磁盘中的所有空闲 space。
这里是代码使用:
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
如果在 Management Studio 中使用 运行 这个脚本,它工作正常,所以 ldf 文件每出现 15 次就会收缩一次。但是与Talend一起使用,ldf文件不断增长。
我该如何解决? 我尝试放置一个 tOpenconnection,然后是 tmssqlrow,然后是 tmssqlcommit 和 tcloseconnection,但面临同样的问题。
据我所见,tMSSqlRow
并不总是按预期使用 sql 脚本。您应该将脚本封装在存储过程中,然后从 tMSSqlRow
(EXEC myStoredProcedure..
) 或 tMSSqlSP
组件调用存储过程。