【发布时间】:2014-08-04 08:31:42
【问题描述】:
这与 SQL Server 2008 有关。
我正在编写一个用于将数据从生产数据库移动到定期缓存数据库以用于 BI 的过程。
两个数据库都在同一个 SQL 实例上,因此我计划在这个阶段避免使用 SSIS。
我需要:
- 从缓存中删除所有现有数据。
- 将所有业务分支选择到一个表中。
- 在表格中选择所有销售部门
- 选择并转换实际数据。
- 如果 2 - 4 中的任何一个失败,那么我需要回滚并返回一个文本错误。以便缓存中的数据保持调用过程之前的状态。
我看过: Stored Procedure Transaction
我认为 try, catch 可能有点矫枉过正。
这方面的最佳做法是什么? 是不是像使用一样简单
BEGIN TRANSACTION
-- Do stuff
IF @@ERROR <> 0
ROLLBACK TRANSACTION
COMMIT TRANSACTION
编辑 - 这篇文章也非常有用: How does SQL Server treat statements inside stored procedures with respect to transactions?
【问题讨论】:
标签: sql sql-server stored-procedures