То, что вы получаете, это ошибка компилятора, это никак не связано с транзакциями. Если я запускаю следующее:
SELECT myfield1, myfield2 INTO #Temp FROM MyTable
PRINT N'Created the table'
--Do stuff with #Temp
DROP TABLE #Temp
PRINT N'Dropped the table'
SELECT myfield3, myfield4 INTO #Temp FROM MyTable2
PRINT N'Created the table again'
--Do stuff with #Temp
DROP TABLE #Temp
PRINT N'Dropped the table again'
Хотя (в моем случае) MyTable
не существует, я все равно получаю сообщение об ошибке:
Сообщение 2714, уровень 16, состояние 1, строка 10
В базе данных уже есть объект с именем #Temp.
Это потому, что в одной и той же партии вы пытаетесь создать одну и ту же таблицу дважды. На самом деле я знаю, что #temp
никогда не создавался (как это не могло быть из-за того, что MyTable
не существовал). Кроме того, операторы PRINT
не выполнялись, показывая, что ничего не предпринималось.
Разделите операторы на 2 пакета, и все будет работать нормально.
SELECT myfield1, myfield2 INTO #Temp FROM MyTable
PRINT N'Created the table'
--Do stuff with #Temp
DROP TABLE #Temp
PRINT N'Dropped the table'
GO
SELECT myfield3, myfield4 INTO #Temp FROM MyTable2
PRINT N'Created the table again'
--Do stuff with #Temp
DROP TABLE #Temp
PRINT N'Dropped the table again'