【发布时间】:2011-02-24 01:30:33
【问题描述】:
我有一个 TSQL 脚本,它做了很多数据库结构调整,但是当出现故障时让它通过并不安全。
说清楚:
- 使用 MS SQL 2005
- 它不是存储过程,只是一个脚本文件 (.sql)
我拥有的是以下顺序的东西
BEGIN TRANSACTION
ALTER Stuff
GO
CREATE New Stuff
GO
DROP Old Stuff
GO
IF @@ERROR != 0
BEGIN
PRINT 'Errors Found ... Rolling back'
ROLLBACK TRANSACTION
RETURN
END
ELSE
PRINT 'No Errors ... Committing changes'
COMMIT TRANSACTION
只是为了说明我正在处理的内容...无法详细说明 现在,问题...
当我引入错误(以测试事情是否回滚)时,我得到一条语句,即 ROLLBACK TRANSACTION 找不到相应的 BEGIN TRANSACTION。 这让我相信,当真的出错并且交易已经被杀死时,有些事情发生了。 我还注意到脚本没有完全退出错误,因此 DID 尝试在错误发生后执行每条语句。 (当我没想到新表出现时,我注意到了这一点,因为它应该已经回滚)
【问题讨论】:
标签: sql-server sql-server-2005 tsql transactions