我记得大学时说过:
默认情况下,在一个事务下不能参与对 2 个或多个数据源进行插入、删除和更新
请考虑这段代码:
begin tran Insert2
begin try
Insert into Northwind.dbo.Categories ([CategoryName], [Description])
values ('New Category', 'Some Desc')
Insert into [TestDB].[dbo].[tblRate]([Year], [Month], [Rate])
values(1111, 1, null) <-- Failed because of null value
commit tran Insert2
end try
begin catch
rollback tran Insert2;
throw;
End catch
我无法创建一个插入在Northwind
数据库上执行而另一个插入不执行的脚本TestDB
,但回滚无法删除Northwind
数据库上插入的行。
问题 1) 事务是在 a 下管理Instance
还是在 a 下管理Database
?我的意思是,给定实例中存在的多个数据库可以参与一个事务吗?
问题 2) 如果TestDB
存在于 SQL Server 的另一个实例中(例如MyServer2
),是否可以将其包含在当前实例的一个事务中(例如MyServer1
)。
您能给我看一下示例代码吗?
谢谢