T-SQL 2005:在一个事务中组合多个创建/更改过程调用

Vin*_*inc 5 t-sql sql-server-2005

我想构建一个T-SQL更改脚本,该脚本将数据库更改从开发到测试再到生产.我把脚本分成了三个部分:

  1. DDL声明
  2. 存储过程的更改(创建和更改过程)
  3. 数据创建和修改

我希望这三个脚本中的所有更改都可以在事务中完成.要么处理脚本中的所有更改,要么 - 在出错时 - 回滚所有更改.我设法通过使用try/catch和begin事务语句为步骤1和3执行此操作.我现在的问题是对存储过程做同样的事情.在"创建存储过程"语句之前直接调用"begin transaction"会导致语法错误,告诉我"alter/create procedure statement必须是查询批处理中的第一个语句".所以我想知道如何在一个事务中组合多个create/alter procedure语句.

任何帮助都非常感谢;-)

谢谢

Ant*_*lev 0

尝试这个:

begin transaction
    go
    create procedure foo as begin select 1 end
    go
commit transaction
Run Code Online (Sandbox Code Playgroud)