SqlServer表死锁的解决方法

1 首先创建一个测试用的表:

  复制代码 代码如下:

  CREATE TABLE Test ( TID INT IDENTITY(1,1) )

2 执行下面的SQL语句将此表锁住:

  复制代码 代码如下:

  SELECT * FROM Test WITH (TABLOCKX)

3 通过下面的语句可以查看当前库中有哪些表是发生死锁的:

  复制代码 代码如下:

  SELECT request_session_id
spid,OBJECT_NAME(resource_associated_entity_id)tableName FROM sys.dm_tran_locks
WHERE resource_type=‘OBJECT ‘

4 上面语句执行结果如下:

  

spid :被锁进程ID。 tableName:发生死锁的表名。
5 只需要使用kill关键字来杀掉被锁的进程ID就可以对表进行解锁:

KILL
52

时间: 2024-12-28 21:50:08

SqlServer表死锁的解决方法的相关文章

Java 死锁及解决方法

死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. java 死锁产生的四个必要条件: 1>互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2>不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放. 3>请求和保持,即当资源请求者在请求其他的资源的同时保持对原有资源的战友. 4>循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P

Oracle数据表中的死锁情况解决方法

不知道干了啥,把数据表锁住了,没法update. 百度了各种方法,总结如下. 查看被锁住的表(两句都可以): select * from v$session t1, v$locked_object t2 where t1.sid=t2.SESSION_ID   select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object

Oracle 11g不能导出空表的多种解决方法

空表不能导出的问题: 查资料发现Oracle 11g中有个新特性:新增了一个参数"deferred_segment_creation"含义是段延迟创建,默认是true. 具体是什么意思呢? deferred_segment_creation,即建立表的时候,这个表不会立即分配extent,也就是不占数据空间,即表也不分配segment以节省空间.直接在字典中记录了数据结构.而只有当真正有数据的时候才分配空间.这种方法对于象SAP这样大的系统需要部署成千上万张表是非常有效的.默认是开启的

postgresql查看死锁及解决方法

检索出死锁进程的ID SELECT * FROM pg_stat_activity WHERE datname='数据库名' and waiting='t'; 找到对用的pid列的值 或 select oid from pg_class where relname='可能锁表了的表' --oid是每个表隐藏的id select pid from pg_locks where relation='上面查出的oid' 将进程杀掉 select pg_cancel_backend("死锁那条数据的pi

查sqlserver表结构说明的方法

一.查出某个库的所有表名 USE database_name GO SELECT tab.name        AS tableName FROM   sys.columns col        INNER JOIN sys.tables tab                ON col.object_id = tab.object_id        LEFT JOIN sys.extended_properties per               ON col.column_id 

jquery submit()不能提交表单的解决方法

今天写表单提交的时候需要增加一个确认提示,所以没有使用submit按钮提交,改用jq的submit(),然后问题了 <form class="form-horizontal m-t" method="post" action="@Url.Action("Edit")" id="form"> <div class="row"> <div class="

SQLServer 表复制,插入方法。

1:当新表不存在时 (即复制数据的同时创建与旧表相同结构的新表) SELECT * INTO dbo.tableBackup FROM dbo.tableName WHERE id BETWEEN 0 AND 20 2:新表已存在,从旧表插入数据.(注意:主键不要复制) INSERT INTO dbo.tableBackup (COL1,COL2,COL3,COL4...) SELECT COL1,COL2,COL3,COL4... FROM dbo.tableName WHERE id bet

sqlserver 2008 孤立用户解决方法

从别一台服务器上得到一个数据库备份.还原到本地,数据库中的用户无法登录,也就是联机帮助中说的还原备份可能产生的孤立用户问题. 一.新建一个 MyDataBase 数据库 二.把备份文件放到 C 盘根目录下 三.sa 连接数据库,选中 任意库.,执行 下面脚本 RESTORE DATABASE MyDataBase FROM DISK = 'C:\MyDataBase.BAK' WITH REPLACE go 四.选择MyDataBase 执行下面脚本 EXEC PRO_DBT_CHANGE_US

SQL Server中解决死锁的新方法介绍

SQL Server中解决死锁的新方法介绍 数据库操作的死锁是不可避免的,本文并不打算讨论死锁如何产生,重点在于解决死锁,通过SQL Server 2005, 现在似乎有了一种新的解决办法. 将下面的SQL语句放在两个不同的连接里面,并且在5秒内同时执行,将会发生死锁. <ccid_nobr> <ccid_code>use Northwindbegin tran insert into Orders(CustomerId) values(@#[email protected]#)