当前位置:Gxlcms > 数据库问题 > SQLServer+.net 事务锁表问题

SQLServer+.net 事务锁表问题

时间:2021-07-01 10:21:17 帮助过:3人阅读

select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type=OBJECT --spid 锁表进程 --tableName 被锁表名 解锁: declare @spid int Set @spid = 57 --锁表进程 declare @sql varchar(1000) set @sql=kill +cast(@spid as varchar) exec(@sql) --查询出死锁的SPID select blocked from (select * from sysprocesses where blocked>0 ) a where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid) --输出引起死锁的操作 DBCC INPUTBUFFER (@spid) --查询当前进程数 select count(-1) from sysprocesses where dbid in (select dbid from sysdatabases where name like %telcount%);

 3:最后发现原因,原因在于,delete操作时如果是删除指定一条记录,SQLServer就会对该条记录进行了行锁定,这时如果再查询该条记录,就会造成死锁。

      同样的SQL语句和操作。我在Oracle中从来没有发现过,所以造成这个问题找了半天。

 4:最后修改程序。对于锁定的记录不再进行查询操作。

SQLServer+.net 事务锁表问题

标签:过程   查看   style   strong   启动   ast   被锁   spi   sts   

人气教程排行