在SQL Server中,如何将大量的tsql语句分成批处理?

Jus*_*ner 2 t-sql transactions sql-server-2005

在SQL Server中,如何将大量的tsql语句分成批处理?我应该在存储过程或函数中使用GO语句吗?我应该在显式事务管理情况下使用GO语句(在BEGIN TRANSACTIONROLLBACK TRANSACTIONCOMMIT TRANSACTION之间)吗?关于这个主题是否有一些最佳实践?非常感谢提前.

Blo*_*ard 5

GO实际上并不是SQL关键字 - 它由SQL Server Management Studio解释.所以你不能在存储过程中使用它.

如果您正在为SSMS编写脚本,则可以GO在事务内部使用,但要小心错误处理 - 如果发生错误,事务将被回滚,但只有当前批处理将被中止,然后执行将继续到下一批.看到这个问题.

至于最佳实践,我个人GO只在必要时才使用(例如,在创建多个存储过程时 - 每个都必须有自己的批处理).越少GO发言,少的工作来处理错误.