Eu tenho algumas ALTER TABLE
declarações que estou executando. Nem todos eles funcionam (eles são o resultado da execução do SQL Data Compare) e eu quero agrupá-los em algumas transações e reverter as instruções se algo der errado.
Isso é possível ou são apenas dados que podem ser revertidos?
Sim, isso é possível.
A maioria das instruções DDL pode ser revertida no SQL Server (há algumas exceções, como
CREATE DATABASE
)Sim, é possível usar muitas
ALTER TABLE
instruções em uma transação comROLLBACK
eCOMMIT
.Aqui está um scaffold para o seu script (seguindo as diretrizes do MS com melhorias):
Tenha cuidado,
THROW
funciona apenas para a versão SQL SERVER >= 2012. Aqui você pode converter uma versão da notação semver para ano : http://sqlserverbuilds.blogspot.ru (não conheço o.ru
domínio, existe uma versão em inglês)Você precisa examinar as transações e o tratamento de exceções no T-SQL. Confira os dois últimos exemplos nesta página: http://msdn.microsoft.com/en-us/library/ms175976.aspx