读书人

sql server 阻塞,该怎么解决

发布时间: 2012-02-11 09:51:35 作者: rapoo

sql server 阻塞
我用PB10+SQL SERVER 2000 写了一个程序,要求可以多用户可以同时登录使用系统,但当前一个用户登录后,后面一个用户单击"登录"按钮后就不动了,要在前一个用户退出系统或是进入系统做一些其它操作(如查询数据,新增数据)后面一个用户才可以登录系统.后来在企业管理器里面查了一下,好像是阻塞的原因,请问该如何解决?或者说不是阻塞的原因.还有一个现象就是我写了另外一个多用户同时使用没有问题,使用的是本地数据库.前面有问题的是使用的别人的数据库.这样看来,是不是数据库设置的问题,请各位高人给我分析一下

[解决办法]

SQL code
declare Roy_lock cursor forselect     db_name(dbid),0,blockedfrom    master..sysprocesses awhere    Blocked>0 and    not exists(select 1 from Master..Sysprocesses where blocked=a.spid)union select     db_name(dbid),spid,blockedfrom    master..sysprocesses awhere    Blocked>0declare @DBName sysname,@spid bigint,@Blocked bigintopen Roy_lockfetch next from Roy_lock into @DBName,@spid,@Blockedwhile @@fetch_status=0begin    if @spid=0        print N'定:'+@DBName+'    句:'    else        print N'定:'+@DBName+'    程SPID:'+rtrim(@spid)+' 句:'    dbcc inputbuffer(@Blocked)fetch next from Roy_lock into @DBName,@spid,@Blockedendclose Roy_lockdeallocate Roy_lock
[解决办法]
看来楼上版主也不怎么样哦,技术还没有更新,还是查Master..Sysprocesses这个表
[解决办法]
很有可能是PB代码的问题,查看一下登录过程中,对用户表的使用情况,

应该是没有及时释放锁,提交事务或ADO控件的参数不正确.
[解决办法]
探讨

看来楼上版主也不怎么样哦,技术还没有更新,还是查Master..Sysprocesses这个表

[解决办法]
1. 首先查 那条语句堵塞了,大班和小f姐,都已经给出方法了。
2. 降低锁的粒度。或者放弃锁。

读书人网 >SQL Server

热点推荐