Home  >  Article  >  Database  >  sqlserver锁表、解锁、查看销表

sqlserver锁表、解锁、查看销表

WBOY
WBOYOriginal
2016-06-07 17:46:241377browse

sqlserver中怎么锁表、解锁、查看销表呢,下面我以三个不同的实例给各位朋友详细介绍一下有需要的朋友可参考一下。

sqlserver中怎么锁表、解锁、查看销表呢,下面我以三个不同的实例给各位朋友详细介绍一下有需要的朋友可参考一下。

锁定数据库的一个表

 代码如下 复制代码

SELECT * FROM table WITH (HOLDLOCK)

注意: 锁定数据库的一个表的区别

 代码如下 复制代码

SELECT * FROM table WITH (HOLDLOCK)

其他事务可以读取表,但不能更新删除

 代码如下 复制代码

SELECT * FROM table WITH (TABLOCKX)

其他事务不能读取表,更新和删除

SELECT 语句中“加锁选项”的功能说明

SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果。 本文介绍了SELECT语句中的各项“加锁选项”以及相应的功能说明


查看被锁表:

 代码如下 复制代码

select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName  
from   sys.dm_tran_locks where resource_type='OBJECT'

spid   锁表进程
tableName   被锁表名


解锁:

创建一个临时Table
 

 代码如下 复制代码
CREATE TABLE #HarveyLock
(
 SPID  INT,
 DBID  INT,
 OBJID  INT,
 INDID  INT,
 TYPE  VARCHAR(100),
 RESOURCE VARCHAR(100),
 MODE  VARCHAR(100),
 STATUS  VARCHAR(100)
)


将Lock信息存入该Table

INSERT INTO #HarveyLock EXEC SP_LOCK
 
3.在Table中下条件查询得到的LOCK
SELECT * FROM #HarveyLock
 
4.KILL 相关LOCK
KILL @SPID

 代码如下 复制代码

declare @spid  int
Set @spid  = 57 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid  as varchar)
exec(@sql)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn