GVKun编程网logo

查看sqlserver被锁的表以及如何解锁(sqlserver查看表是否被锁)

11

在本文中,我们将详细介绍查看sqlserver被锁的表以及如何解锁的各个方面,并为您提供关于sqlserver查看表是否被锁的相关解答,同时,我们也将为您带来关于Oracle查询被锁的表以及解锁表、o

在本文中,我们将详细介绍查看sqlserver被锁的表以及如何解锁的各个方面,并为您提供关于sqlserver查看表是否被锁的相关解答,同时,我们也将为您带来关于Oracle 查询被锁的表以及解锁表、oracle查看被锁的表以及解锁的方法介绍(代码示例)、Sql Server如何查看被锁的表及解锁的方法、Sqlserver 之死锁查询以及批量解锁的实现方法的有用知识。

本文目录一览:

查看sqlserver被锁的表以及如何解锁(sqlserver查看表是否被锁)

查看sqlserver被锁的表以及如何解锁(sqlserver查看表是否被锁)

原文: 点击打开链接


查看sqlserver被锁的表以及如何解锁
 
查看被锁表:
  www.2cto.com  
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)

Oracle 查询被锁的表以及解锁表

Oracle 查询被锁的表以及解锁表

1. 查询引起了锁表的原因

select l.session_id sid,
       s.serial#,
       l.locked_mode,
       l.oracle_username,
       s.user#,
       l.os_user_name,
       s.machine,
       s.terminal,
       a.sql_text,
       a.action
  from v$sqlarea a, v$session s, v$locked_object l
  where l.session_id = s.sid
  and s.prev_sql_addr = a.address
  order by sid, s.serial#;

2. 查询被锁的表

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id

3. 查看是哪个 session 引起的

select b.username,b.sid,b.serial#,logon_time from  v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time

4. 杀掉对应进程即解锁

--其中99是sid 178是serial#
alter system kill session ''99,178''

 

oracle查看被锁的表以及解锁的方法介绍(代码示例)

oracle查看被锁的表以及解锁的方法介绍(代码示例)

本篇文章给大家带来的内容是关于oracle查看被锁的表以及解锁的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

--以下几个为相关表

SELECT * FROM v$lock;
SELECT * FROM v$sqlarea;
SELECT * FROM v$session;
SELECT * FROM v$process ;
SELECT * FROM v$locked_object;
SELECT * FROM all_objects;
SELECT * FROM v$session_wait;
登录后复制

--查看被锁的表

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
登录后复制

--查看那个用户那个进程照成死锁

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
登录后复制

--查看连接的进程

SELECT sid, serial#, username, osuser FROM v$session;
登录后复制

--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode

SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
s.terminal, s.logon_time, l.type
FROM v$session s, v$lock l
WHERE s.sid = l.sid
AND s.username IS NOT NULL
ORDER BY sid;
登录后复制

这个语句将查找到数据库中所有的DML语句产生的锁,还可以发现,
任何DML语句其实产生了两个锁,一个是表锁,一个是行锁。

--杀掉进程 sid,serial#

alter system kill session ''210,11562'';   此处不能连接起来 要有空格,不然会报错的例如(alter system kill session''210,11562''; )

以上就是oracle查看被锁的表以及解锁的方法介绍(代码示例)的详细内容,更多请关注php中文网其它相关文章!

Sql Server如何查看被锁的表及解锁的方法

Sql Server如何查看被锁的表及解锁的方法

查看被锁表:

select spId
from master..SysProcesses
where db_Name(dbID) = ''数据库名称''
and spId <> @@SpId
and dbID <> 0

解除锁:

exec (''Kill ''+cast(@spid as varchar))

查看被锁表:

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)

以上所述是小编给大家介绍的Sql Server如何查看被锁的表及解锁的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

您可能感兴趣的文章:
  • sqlserver2008锁表语句详解(锁定数据库一个表)
  • sqlserver 锁表语句分享
  • SqlServer表死锁的解决方法分享
  • SQLServer 中的死锁说明
  • SQL Server三种锁定模式的知识讲解
  • sql server中死锁排查的全过程分享
  • sqlserver:查询锁住sql以及解锁方法
  • sqlserver锁表、解锁、查看销表的方法
  • SQL Server中锁的用法

Sqlserver 之死锁查询以及批量解锁的实现方法

Sqlserver 之死锁查询以及批量解锁的实现方法

这篇文章主要介绍了 Sqlserver 之死锁查询以及批量解锁的实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

目录

 

  • Sqlserver 死锁查询以及批量解锁方法
    • Sqlserver 死锁查询以及解锁方法
    • sqlserver 批量 kill 死锁
  • 解决 sqlserver 死锁问题
    • 创造死锁
    • 解决方法
  • 总结

 

Sqlserver 死锁查询以及批量解锁方法

 

Sqlserver 死锁查询以及解锁方法

(1)下面是查询死锁进程

select 
request_session_id spid,                              (死锁进程id)
OBJECT_NAME(resource_associated_entity_id) tableName  (死锁进程名称)
from sys.dm_tran_locks 
where resource_type=''OBJECT''                          (数据类型所有)

(2)杀死死锁进程

declare @spid int                                      //声明id
Set     @spid = 62                                     //设置死锁id
declare @sql varchar(1000)                             //声明sql 
set     @sql=''kill ''+cast(@spid as varchar)            //设置 kill掉死锁进程
exec    (@sql)                                         //执行

或者

kill 62;

 

sqlserver 批量 kill 死锁

select ''kill ''+CONVERT(varchar,request_session_id) ,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks
where
   resource_type=''OBJECT''

解决 sqlserver 死锁问题

 

创造死锁

-- 开始事务
BEGIN TRANSACTION 
update job set create_user=''0000'' where id = ''1''
WAITFOR DELAY ''02:00''
-- 执行查询
select * from job where id = ''1'';

解决方法

方法一

  • 打开 sqlserver 管理工具,新建 sql 查询 tab
  • 执行 select * from master.sys.sysprocesses where dbid=db_id (‘数据库名’)
  • 然后会查询到具体有哪个在连接到此数据库
  • 直接 KILL spid 的具体数值就可以了

方法二

-- 首先查询
select    
    request_session_id spid,   
    OBJECT_NAME(resource_associated_entity_id) tableName    
from    
    sys.dm_tran_locks   
where    
    resource_type=''OBJECT'' 
-- 然后执行
    kill 67;

注意事项:

有些用户连接可以在 kill 掉后自动重建,但期间有一段时间,如果碰到这种情况,需要在执行完 kill 命令后立即执行脱机操作

 

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

关于查看sqlserver被锁的表以及如何解锁sqlserver查看表是否被锁的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Oracle 查询被锁的表以及解锁表、oracle查看被锁的表以及解锁的方法介绍(代码示例)、Sql Server如何查看被锁的表及解锁的方法、Sqlserver 之死锁查询以及批量解锁的实现方法的相关信息,请在本站寻找。

本文标签: