В моем пакете SSIS у меня есть задача выполнения SQL с двумя операторами. В основном это:Несколько операторов в SSIS Выполнение SQL-задачи
INSERT INTO table2 SELECT * FROM table1;
TRUNCATE TABLE table1
Первый оператор не выполнен (дубликаты записей). Но таблица1 пуста! Не понимаю ли я основные принципы баз данных ?! Я ожидал, что вся партия завершится неудачно, если первый оператор не сработает.
В отчете об исполнении ожидаются сообщения об ошибках: 1. Нельзя вставить дублируемую строку ключа. 2. Заявление было прервано. Возможные причины отказа бла-бла
Мой сервер SQL Server 2012 с пакетом обновления 2 CU1, соединение OLEDB
Там нет других усечь заявления для этой таблицы, известной мне. Я сошел с ума?
Без явных транзакций для отката, почему одна земля, по вашему мнению, не будет рассматривать их как два отдельных независимых заявления? – HLGEM
HLGEM, я всегда думал о транзакциях, как о возможности отката _прерывных операторов, не отменяющих выражения _following_. Я всегда плохо работал с обработкой ошибок. :( BTW, когда я добавляю GO после каждого утверждения, я получаю первоначально ожидаемое поведение. Но являются ли партии равными транзакциям? Это было бы еще большим сюрпризом для меня. – Esc
партии не обязательно являются транзакциями. в 44-й книге. – HLGEM