Я пытаюсь выполнить несколько операторов DDL в области транзакции. Я пытаюсь выполнить все операторы, которые относятся к запросу на изменение модели, как одну транзакцию, чтобы все операторы DDL не выполнялись или выполнялись успешно. Моя цель - не оставлять БД в несогласованном утверждении после выполнения группы операторов DDL.
Я обнаружил, что SQL Server 2008 R2 поддерживает транзакции для операторов DDL. Я не говорю о типах DDL DROP DB - я имею в виду CREATE TABLE, ALTER TABLE, DROP TABLE и т. Д.
Я прочитал следующие связанные темы, но не нашел ответа.
Можно ли запустить несколько операторов DDL внутри транзакции (в SQL Server)?
Модульное тестирование операторов DDL, которые должны быть в транзакции
Сценарии DDL в блоке транзакции вступают в силу даже при наличии ошибок
Мне нужен шаблонный скрипт для выполнения набора операторов DDL в качестве транзакции и их отката в случае сбоя одного из операторов , и я хочу, чтобы ошибка была распечатана или сохранена в таблица ошибок. Кто-нибудь может помочь?
В своем исследовании я нашел несколько альтернатив, но я не уверен, какой из них выбрать, поскольку я новичок в этой области. Мне нужна помощь опытных рук.
- Использование XACT_ABORT в области транзакции для отмены первой ошибки в транзакции
- Используйте блоки TRY и CATCH и поместите операторы DDL в транзакцию внутри блока TRY
Вот страницы, которые я прочитал.
http://msdn.microsoft.com/en-us/library/ms179296.aspx
http://msdn.microsoft.com/en-us/library/ms188792.aspx
http://www.codeproject.com/KB/database/sqlservertransactions.aspx