Tengo algunas ALTER TABLE
declaraciones que estoy ejecutando. No todos funcionan (son el resultado de ejecutar SQL Data Compare) y quiero agruparlos en algunas transacciones y revertir las declaraciones si algo sale mal.
¿Es esto posible, o son solo datos que pueden revertirse?
sql-server
t-sql
transaction
rollback
Piers Karsenbarg
fuente
fuente
Respuestas:
fuente
SET XACT_ABORT ON
Y una finalCOMMIT TRAN
negaría la necesidad de losTRY
bloques?Si, esto es posible.
La mayoría de las declaraciones DDL se pueden revertir en SQL Server (hay algunas excepciones como
CREATE DATABASE
)fuente
Muchas alteraciones en una transacción con
rollback
ycommit
- no es un sueño. Es posible.Aquí hay un andamio para su script (siguiendo las pautas de MS con mejoras):
Tenga cuidado,
THROW
solo funciona para la versión SQL SERVER> 2012. Aquí puede convertir una versión de notación de semver a año : http://sqlserverbuilds.blogspot.ru (no conoce el.ru
dominio, hay una versión en inglés)fuente
Debe analizar las transacciones y el manejo de excepciones en T-SQL. Vea los dos últimos ejemplos en esta página: http://msdn.microsoft.com/en-us/library/ms175976.aspx
fuente