前提:先建立一个链接服务器,别名叫linkServer
SET XACT_ABORT ON /*这是一定要打开的,否则事务没有意义*/
/*呵呵,分布式事务的最明显标志;普通的事务就是BEGIN TRAN T1;我这里的普通也可看作是一台服务器上事务,而不是跨服务器的,也就是狭义的分布*/
BEGIN DISTRIBUTED TRANSACTION T1
update linkServer.db1.dbo.table1 set .... /*更新远程另外一台服务器*/
insert into localhost.db2.dbo.table2 .... /*同时本地服务器追加一条记录*/
if @@Error<>0 /*如果有错,事务回滚;如果有多步操作,可分批回滚*/
begin
Rollback T1
return @@Error
end
Commit Tran