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 被锁表名
[@more@]

解锁:

创建一个临时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)

时间: 2024-11-08 18:05:12

sqlserver锁表、解锁、查看销表的方法的相关文章

sqlserver锁表、解锁、查看销表的方法_MsSql

锁定数据库的一个表 复制代码 代码如下: SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 复制代码 代码如下: SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 复制代码 代码如下: SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除 SELECT 语句中"加锁选项"的功能说明 SQL Server提供了强大而完备的锁机

sqlserver锁表、解锁、查看销表

  有几个朋友留言建议结合例子来演示一下, 上篇已经说过锁的几种类型, 可以利用系统动态视图sys.dm_tran_locks查看到,重要的栏位如下: resource_type被锁的资源类型(Database, FILE, Object,PAGE,KEY,EXTENT,RID,APPLICATION,METADATA,HOBT,APPOCATION_UNIT) request_mode锁的类型(共享锁,更新锁,排它锁, 架构锁等) resource_description资源描述 reques

mysql中lock tables与unlock tables(锁表/解锁)使用总结

php mysql lock tables 使用有感 mysql 的 表锁 lock tables 感觉就像一个 封闭的空间 mysql发现 lock tables 命令的时候,会将带有锁标记的表(table) 带入封闭空间,直到 出现 unlock tables 命令 或 线程结束, 才关闭封闭空间. 进入封闭空间时 , 仅仅只有锁标记的表(table) 可以在里面使用,其他表无法使用. 锁标记 分为 read 和 write 下面是 两种 锁的区别 ---------------------

如何将数据库中被锁表解锁

数据|数据库 我们在操作数据库的时候,有时候会由于操作不当引起数据库表被锁定,这么我们经常不知所措,不知怎么给这些表解锁,在pl/sql Developer工具的的菜单"tools"里面的"sessions"可以查询现在存在的会话,但是我们很难找到那个会话被锁定了,想找到所以被锁的会话就更难了,下面这叫查询语句可以查询出所以被锁的会话.如下: SELECT   sn.username, m.SID,sn.SERIAL#, m.TYPE,         DECODE

sqlserver,我用代码新建表建立的表,能看到代码吗?

问题描述 sqlserver,我用代码新建表建立的表,能看到代码吗? sqlserver,我用代码新建表建立的表,能看到代码吗?不是用查询新建的,我用看到sql语言 解决方案 查看建表语句:右键表名-编写脚本为-Create到 导出整个表带数据:右键数据库-所有任务-生成脚本-选择表 解决方案二: 当然可以,在树上选择表,右键生成sql代码,可以得到建表代码. 解决方案三: 只要是用代码新建表建立,都是可以 看到的. 解决方案四: 分析表的事务代码

sql server-sqlserver中导入数据库后,把由windowds验证改成sqlserver后,数据库中的表消失

问题描述 sqlserver中导入数据库后,把由windowds验证改成sqlserver后,数据库中的表消失 解决方案 数据库选对了吗?如果选不对,肯定找不到表的 解决方案二: 新手表示没遇到过这种问题 解决方案三: 用windows账号重新登陆查看下表是否真的消失.然后检查下你使用的sql server账号的权限.

如何查看用户表所占空间的大小

如何查看用户表所占空间的大小? 说明:  SQL> col SEGMENT_NAME format a20 SQL> col TABLESPACE_NAME format a20 SQL> select segment_name,tablespace_name,bytes,blocks from user_segments where segment_type='TABLE';

如何查看各个表空间占用磁盘情况

如何查看各个表空间占用磁盘情况? 软件环境:  1.Windows NT4.0+ORACLE 8.0.4 2.ORACLE安装路径为:C:\ORANT SQL语句:        /*     中文环境    */      col 表空间名 format a20;      select       b.file_id  文件ID号,      b.tablespace_name  表空间名,      b.bytes  字节数,      (b.bytes-sum(nvl(a.bytes,0

使用 XSL 样式表无法查看 XML 输入

xml|样式表 无法显示 XML 页. 使用 XSL 样式表无法查看 XML 输入.请更正错误然后单击 刷新按钮,或以后重试. -------------------------------------------------------------------------------- 名称以无效字符开头.处理资源 'http://localhost/Asp.net/Default.aspx' 时出错.第 1 行,位置: 2 <%@ Page Language="C#" Aut