У меня есть несколько ALTER TABLE
заявлений, которые я выполняю. Не все из них работают (они являются результатом выполнения SQL Data Compare), и я хочу сгруппировать их в некоторые транзакции и откатить операторы, если что-то пойдет не так.
Это возможно, или это только данные, которые можно откатить?
sql-server
t-sql
transaction
rollback
Пирс Карсенбарг
источник
источник
Ответы:
источник
SET XACT_ABORT ON
и окончательныйCOMMIT TRAN
отрицать необходимостьTRY
блоков?Да, это возможно
Большинство операторов DDL можно откатить в SQL Server (есть несколько исключений, таких как
CREATE DATABASE
)источник
Много переделок в одной транзакции с
rollback
иcommit
- это не сон. Возможно.Вот платформа для вашего скрипта (следуя указаниям MS с улучшениями):
Будьте внимательны,
THROW
работает только для версии SQL SERVER> 2012. Здесь вы можете преобразовать версию из семвера в год : http://sqlserverbuilds.blogspot.ru (не в курсе.ru
домена, есть английская версия)источник
Вам нужно изучить транзакции и обработку исключений в T-SQL. Посмотрите два последних примера на этой странице: http://msdn.microsoft.com/en-us/library/ms175976.aspx
источник