sqlserver锁表不能查询吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver锁表不能查询吗相关的知识,希望对你有一定的参考价值。

能查询 但是不能插入修改删除操作。
--查看被锁表: 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)
参考技术A 锁住了就不能抄作了

mysql 查询锁表

1)使用情景“判断通过后写入数据库”,这个一般是不会有问题的, 但并发访问的时候就不太好搞。因为写入(insert)是需要时间的,假设现在有两个并发请求,(假设第一个访问是最后一个符合条件的写入请求,按照逻辑,第二个请求应该是不合法、不能写入的),在第一请求成功写入之前,第二请求查询到未更新的数据记录,因为记录是未更新的,所以它也是可以通过判断的。最后导致两个请求都写入数据了。

 

2)解决办法:查询锁表

在我处理完入库前,查都不让你查了,这样就不会判断错误了吧

 

3)锁表语句

LOCK TABLES tbl_name WRITE;

注意这里是用的 WRITE!!

解锁:

UNLOCK TABLES;

 

 

注意:是要查询之前锁表(select 之前),锁表之后,本进程是可以继续查询的,只是锁了其他进程的查询

 

以上是关于sqlserver锁表不能查询吗的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver锁表机制

请问sqlserver中的两个表怎么进行关联

怎样查询出SQLSERVER被锁的表,以锁表的SQL语句

SqlServer查看锁表与解锁

Sqlserver各种数据库的锁表和解锁操作

SqlServer查看锁表与解锁