【发布时间】:2023-03-27 00:23:01
【问题描述】:
在我的 SSIS 包中,我有一个带有 2 个语句的执行 SQL 任务。基本上,它们是:
INSERT INTO table2 SELECT * FROM table1;
TRUNCATE TABLE table1
第一个语句失败(重复记录)。但是 table1 现在是空的!我误解了数据库的基本原理吗?!如果第一条语句失败,我预计整个批次都会失败。
在执行报告中有预期的错误消息: 1. 不能插入重复的键行。 2. 声明已终止。可能的失败原因bla-bla
我的服务器是 SQL Server 2012 SP2 CU1,OLEDB 连接
我不知道该表的其他截断语句。我疯了吗?
【问题讨论】:
-
如果没有明确的事务来回滚,为什么一个地球不会将它们视为两个独立的独立语句?
-
HLGEM,我一直认为事务是回滚以前的语句而不是取消以下语句的手段。我一直不擅长错误处理。 :( 顺便说一句,当我在每个语句之后添加 GO 时,我得到了最初预期的行为。但是批次等于交易吗?这对我来说是另一个大惊喜。
-
批次不一定是事务。您需要在线阅读这两个方面的内容。
标签: sql ssis sql-server-2012