不放心自己试一下吧,应该没问题的实际上跨越两个或多个数据库的单个 SQL Server 中的事务就是分布式事务。但是,SQL Server 对分布式事务进行内部管理;对于用户而言,其操作就像本地事务一样。对于应用程序,管理分布式事务很像管理本地事务。事务结束时,应用程序请求提交或回滚事务。不同的是,分布式提交必须由事务管理器管理,以尽量避免出现因网络故障而导致一个事务由某些资源管理器成功提交,但由另一些资源管理器回滚的情况。通过分两个阶段(准备阶段和提交阶段)管理提交进程可避免这种情况,这称为两阶段提交 (2PC)。准备阶段当事务管理器收到提交请求时,它给该事务所涉及的所有资源管理器发送一个准备命令。然后,每个资源管理器将尽力使该事务持久,并且所有保存该事务日志映象的缓冲区将被刷新到磁盘中。当每个资源管理器完成准备阶段时,它会向事务管理器返回准备成功或准备失败的消息。提交阶段如果事务管理器收到所有资源管理器发来的准备成功消息,它将给每个资源管理器发送提交命令。然后资源管理器就可以完成提交。如果所有资源管理器都报告提交成功,那么事务管理器则向应用程序发送一个成功提示。如果有资源管理器报告准备失败,那么事务管理器将给每个资源管理器发送一个回滚命令,并向应用程序表示提交失败。SQL Server 应用程序可以通过 Transact-SQL 或数据库 API 管理分布式事务。
'Test', --名称
'',
'MSDASQL',
NULL,
NULL,
'DRIVER={SQL Server};SERVER=服务器名;UID=sa;PWD=密码;'
GOexec sp_addlinkedsrvlogin 'test','false','sa','sa',''begin tran
delete from Test.库名.dbo.表名
rollback tran
you will get following error message
服务器 'EBTSZ' 上的 MSDTC 不可用。
'Test', --名称
'',
'MSDASQL',
NULL,
NULL,
'DRIVER={SQL Server};SERVER=服务器名;UID=sa;PWD=密码;'
GOexec sp_addlinkedsrvlogin 'test','false','sa','sa',''begin tran
delete from Test.库名.dbo.表名
rollback tran
you will get following error message
服务器 'EBTSZ' 上的 MSDTC 不可用。
'Test', --名称
'',
'MSDASQL',
NULL,
NULL,
'DRIVER={SQL Server};SERVER=服务器名;UID=sa;PWD=密码;'
GOexec sp_addlinkedsrvlogin 'test','false','sa','sa',''begin tran
delete from Test.库名.dbo.表名
rollback tran
you will get following error message
服务器 'EBTSZ' 上的 MSDTC 不可用。