SQL SERVER 分布式事务数据一致性问题

三断笛 2014-05-27 11:42:02
这个问题无法提供完整的测试代码.希望热心人能耐心地帮助我.

操作步骤:
1.找两以已安装sql server2005/2008的机器,假设为A和B
2.在服务器A上下载sqlquerystress软件,用发模拟并发操作.
下载地址:http://www.datamanipulation.net/sqlquerystress/sqlquerystress_0_9_7.msi
3.在服务器A上创建链接服务器到服务器B,链接服务器名为TestLink
4.在服务器B的数据库(假设为testdb)中创建测试表和测试数据


create table t_test(
id int identity(1,1) primary KEY,
data1 int,
Data2 int,
Data3 int,
Data4 int,
Data5 int
)
go

insert into t_test(data1,data2,data3,data4,data5)
values(0,0,0,0,0)
insert into t_test(data1,data2,data3,data4,data5)
values(0,0,0,0,0)
insert into t_test(data1,data2,data3,data4,data5)
values(0,0,0,0,0)
insert into t_test(data1,data2,data3,data4,data5)
values(0,0,0,0,0)
insert into t_test(data1,data2,data3,data4,data5)
values(0,0,0,0,0)


5.使用sqlquerystress连接到服务器A,测试代码如下:

set xact_abort on
begin tran
update TestLink.Testdb.dbo.t_test
set data1=data1+1
update TestLink.Testdb.dbo.t_test
set data2=data2+1
update TestLink.Testdb.dbo.t_test
set data3=data3+1
update TestLink.Testdb.dbo.t_test
set data4=data4+1
update TestLink.Testdb.dbo.t_test
set data5=data5+1

可以测试10个并发,2个循环.

执行结束后,正确的结果是data1~data5每一列的结果相同.
实际执行过程中产生了一些异常.但按照事务一致性,应该要保证每列结果一致,但事实上却出现了不一致.
这是sql server的漏洞么?

我这边执行过程报的异常有"行集正在使用乐观并发机制.."

请高人解答.
...全文
103 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧