此会话中的活动事务已由另外一个会话提交或终止?

[复制链接]
查看11 | 回复6 | 2009-3-10 21:16:04 | 显示全部楼层 |阅读模式
程序是三层结构的,中间层采用COM+实现,SQLServer2005企业版,补丁都打齐了
在并发比较大时,执行查询,经常会报:此会话中的活动事务已由另外一个会话提交或终止。


请问大侠们,这个怎么解决啊?帮帮我啊。。。。
回复

使用道具 举报

千问 | 2009-3-10 21:16:04 | 显示全部楼层
发生了死锁而导致的。可使用 1024跟踪标记可以跟踪死锁(sql2005可以直接用事件探察器)
回复

使用道具 举报

千问 | 2009-3-10 21:16:04 | 显示全部楼层
我猜测是事务写的有问题
[ 本帖最后由 chenhp 于 2007-12-27 17:03 编辑 ]
回复

使用道具 举报

千问 | 2009-3-10 21:16:04 | 显示全部楼层
hxd001_810 大侠,能否具体教一下怎样使用 1024跟踪标记?
回复

使用道具 举报

千问 | 2009-3-10 21:16:04 | 显示全部楼层
我用 邹建的 的查看死锁的存储过程, 好像没有什么死锁的进程
而且在SQL2005中开启了快照隔离,每个表提交都是按照主键更新和删除的,应该不存在死锁才对啊
回复

使用道具 举报

千问 | 2009-3-10 21:16:04 | 显示全部楼层
先执行系统过程sp_server_info看一下ATTRIBUTE_ID为17的ATTRIBUTE_VALUE是否为(默认的)2?
如果不是,执行如下命令:SET TRANSACTION ISOLATION LEVEL READ COMMITTED
恢复到默认设置,之后,再看一下是否还会报错?
要不就直接设置为最低的隔离级别:SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
应该就不会有什么问题了,不过,这样就会出现脏读、不可重复读取、幻像等现象
回复

使用道具 举报

千问 | 2009-3-10 21:16:04 | 显示全部楼层
刚查看了一下,一直都是2,以下是全部信息:
1
DBMS_NAME
Microsoft SQL Server
2
DBMS_VER
Microsoft SQL Server Yukon - 9.00.3042
10
OWNER_TERM
owner
11
TABLE_TERM
table
12
MAX_OWNER_NAME_LENGTH
128
13
TABLE_LENGTH
128
14
MAX_QUAL_LENGTH
128
15
COLUMN_LENGTH
128
16
IDENTIFIER_CASE
MIXED
17
TX_ISOLATION
2
18
COLLATION_SEQ
charset=cp936 collation=Chinese_PRC_CI_AS
19
SAVEPOINT_SUPPORT
Y
20
MULTI_RESULT_SETS
Y
22
ACCESSIBLE_TABLES
Y
100
USERID_LENGTH
128
101
QUALIFIER_TERM
database
102
NAMED_TRANSACTIONS
Y
103
SPROC_AS_LANGUAGE
Y
104
ACCESSIBLE_SPROC
Y
105
MAX_INDEX_COLS
16
106
RENAME_TABLE
Y
107
RENAME_COLUMN
Y
108
DROP_COLUMN
Y
109
INCREASE_COLUMN_LENGTH
Y
110
DDL_IN_TRANSACTION
Y
111
DESCENDING_INDEXES
Y
112
SP_RENAME
Y
113
REMOTE_SPROC
Y
500
SYS_SPROC_VERSION
9.00.3042
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行