啟動服務中的distributed transaction coodinator後
建立鏈結伺服器ender-pc\subx
設定連線伺服器rpc out 以及rpc屬性為true
實驗一下**
建立表
create table [dbo].[yuf]([id] [uniqueidentifier] not null,
[namx] [nvarchar](50) not null,
) on [primary]
第一種方法顯示呼叫begin distributed transaction
set xact_abort onbegin distributed transaction distributedtran
begin
declare @rowcounts int =0;
insert into dbo.yuf(id,namx) values(newid(),n'test1');
select * from dbo.yuf;
set @rowcounts=@rowcounts+(select @@rowcount);
insert into [ender-pc\subx].subt.dbo.yuf(id,namx) values(newid(),n'test1'+replicate(n'1',50));
set @rowcounts=@rowcounts+(select @@rowcount);
if @rowcounts=2
commit transaction distributedtran;
else
rollback transaction distributedtran;
endgo
select * from dbo.yuf;
第二種方法跟呼叫本地事務一樣
use testexec sp_configure 'remote proc trans', 1 ;
go
reconfigure ;
go
1)呼叫儲存過程方式
create procedure xt@l int
asbegin
set xact_abort on;
begin tran
insert into dbo.yuf(id,namx) values(newid(),n'test1');
insert into [ender-pc\subx].subt.dbo.yuf(id,namx) values(newid(),n'test1'+replicate(n'1',@l));
commit tran;
endgo
exec dbo.xt @l=55;--插入超長字串,導致兩個表資料回滾goexec dbo.xt @l=20;--兩表插入正常
2)直接指令碼呼叫方式
set xact_abort onbegin tran
declare @rowcounts int =0;
insert into dbo.yuf(id,namx) values(newid(),n'test1');
select * from dbo.yuf;
set @rowcounts=@rowcounts+(select @@rowcount);
insert into [ender-pc\subx].subt.dbo.yuf(id,namx) values(newid(),n'test1'+replicate(n'1',20));
set @rowcounts=@rowcounts+(select @@rowcount);
commit transaction
SQL Server之分布式事務
title sql server之分布式事務 author wufeng4552 date 2009 11 11 sql server之分布式事務 一 概念 分布式事務是涉及來自兩個或多個源的資源的事務。microsoft sql server 2000支援分布式事務,使使用者得以建立事務來更新多個...
SQL Server之分布式事務
title sql server之分布式事務 author wufeng4552 date 2009 11 11 sql server之分布式事務 一 概念 分布式事務是涉及來自兩個或多個源的資源的事務。microsoft sql server 2000支援分布式事務,使使用者得以建立事務來更新多個...
分布式 分布式事務
是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...