我正在开发一个 Windows 应用程序 (WinForms),它需要运行四个不同的进程(存储过程),其中包括在四个进程中的任何一个引发错误的实例中提交或回滚整个进程的能力。我将在下面描述我的情况(请原谅我对 SQL 的无知,因为我不是 DBA):
Windows 应用程序:单击进程按钮
数据库:启动过程 1(可能是 BEGIN TRANSACTION MyProcessTransaction)
Windows 应用程序:单击进程按钮
数据库:启动过程 1(可能是 BEGIN TRANSACTION MyProcessTransaction)
Windows 应用程序:接收来自程序 1 的通知,表明它已成功完成并更新进度条。
数据库:启动过程 2(并且不知何故仍封装在MyProcessTransaction下)
Windows 应用程序:接收来自程序 2 的通知,表明它已成功完成并更新进度条。
- 数据库:启动过程 3(并且不知何故仍封装在MyProcessTransaction下)并引发错误并回滚事务MyProcessTransaction
这可能吗?我尝试了四个查询窗口并在第一个开始事务,然后将尝试捕获放在其他窗口中并尝试在每个窗口中执行工作以模拟这一点,但是当我到达第四个窗口并故意引发错误时,我收到了异常没有 BEGIN TRANSACTION 让我能够回滚。有什么建议么?