`

sqlserver查看表是否被锁

SQL 
阅读更多

CREATE<wbr>procedure [dbo].[sp_who_lock]<br>as<br>begin<br>declare @spid int,@bl int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intTransactionCountOnEnt<wbr>ry<wbr>int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intRowcount<wbr><wbr><wbr>int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intCountProperties<wbr><wbr>int,<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>@intCounter<wbr><wbr><wbr>int<br><wbr>create table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)<br><wbr><br><wbr>IF @@ERROR&lt;&gt;0 RETURN @@ERROR<br><wbr><br><wbr>insert into #tmp_lock_who(spid,bl) select<wbr>0 ,blocked<br><wbr><wbr>from (select * from master..sysprocesses where<wbr>blocked&gt;0 ) a<br><wbr><wbr>where not exists(select * from (select * from master..sysprocesses where<wbr>blocked&gt;0 ) b<br><wbr><wbr>where a.blocked=spid)<br><wbr><wbr>union select spid,blocked from master..sysprocesses where<wbr>blocked&gt;0</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>IF @@ERROR&lt;&gt;0 RETURN @@ERROR<br><wbr><br>-- 找到临时表的记录数<br><wbr>select<wbr>@intCountProperties = Count(*),@intCounter = 1<br><wbr>from #tmp_lock_who<br><wbr><br><wbr>IF @@ERROR&lt;&gt;0 RETURN @@ERROR<br><wbr><br><wbr>if @intCountProperties=0<br><wbr>select '现在没有阻塞和死锁信息' as message</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

-- 循环开始
while @intCounter <= @intCountProperties
begin
-- 取第一条记录
<wbr>select<wbr>@spid = spid,@bl = bl<br><wbr>from #tmp_lock_who where id = @intCounter<br><wbr>begin<br><wbr>if @spid =0<br><wbr><wbr><wbr>select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'<br><wbr>else<br><wbr><wbr><wbr>select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'<br><wbr>DBCC INPUTBUFFER (@bl )<br><wbr>end</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

-- 循环指针下移
<wbr>set @intCounter = @intCounter + 1<br>end</wbr>


drop table #tmp_lock_who

return 0
end

分享到:
评论

相关推荐

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

    查看被锁表: select spId from master..SysProcesses where db_Name(dbID) = '数据库名称' and spId &lt;&gt; @@SpId and dbID &lt;&gt; 0 解除锁: exec &#40;'Kill '+cast(@spid as varchar&#41;) 查看被锁表: ...

    SQLServer查询被锁的表和解锁.txt

    ### SQL Server 查询被锁的表与解锁方法 在数据库管理中,锁定机制是确保数据一致性和并发控制的关键组件。然而,在某些情况下,不适当的锁定可能会导致应用程序性能下降或完全停止运行,因此了解如何识别和解除...

    SQlServer中的锁

    SQL Server中的锁机制是数据库管理系统为了保证数据的一致性和完整性而设计的重要机制。在多用户同时访问数据库的环境中,为了防止并发操作导致的数据不一致,SQL Server采用了多种类型的锁来控制对数据的访问。 ...

    SQLServer常见锁表优化语句.txt

    SQLServer常见锁表优化语句

    原创SQL SERVER 解锁工具

    SQL SERVER 有资源紧张时,常会有死锁发生,用此工具可进行解锁操作。

    sql server锁机制

    以下是对SQL Server锁机制的详细解释: 1. **丢失更新**:这是并发操作可能引发的问题之一,当两个事务同时对同一行数据进行更新时,最终可能导致其中一个事务的更新被另一个事务覆盖。SQL Server通过行级锁定避免...

    SQL server 中锁机制详解

    要查看锁,打开企业管理器,展开控制台根目录\Microsoft SQL Servers\SQL Server 组\机器名\管理\当前活动\锁/对象。在每次事务执行后,提交之前,刷新“当前活动”,再展开到“锁/对象”。 HoldLock:将使锁定一直...

    SQLServer200自动杀锁

    在"1建表kill_log.sql"文件中,可能是创建一个日志表的脚本,用于记录每次自动杀锁的事件,包括被杀事务的信息、死锁发生的时间等。这样可以便于后续的分析和优化,找出引发死锁的根源,避免重复的问题。 总结一下...

    SQLServer锁机制探究

    SQL Server的锁机制是数据库管理系统中用于确保数据一致性、避免并发操作冲突的重要机制。在高并发的数据库环境中,正确理解和使用锁是至关重要的,因为它直接影响到系统的性能和稳定性。 首先,我们需要了解SQL ...

    SQL server 2008的锁机制

    在SQL Server 2008中,锁机制是数据库管理系统(DBMS)为了确保数据的一致性和完整性,以及实现多用户并发访问时的一种关键机制。它通过控制对数据的访问来防止并发操作间的冲突,从而避免数据不一致的情况。本文将...

    浅析SQL Server数据库事务锁机制.pdf

    在SQL Server中,当一个事务中的锁较多,达到锁升级门限时,系统会自动将行级锁和页面锁升级为表级锁。这一过程是自动的,用户无需手动设置。 SQL Server中锁的模式和兼容性包括以下几种: 1. 共享锁(Shared Lock...

    快速对SQL Server锁机制进行掌握的窍门

    以下是关于SQL Server锁机制的一些关键知识点: 1. **锁的类型**:SQL Server支持多种锁类型,包括共享锁(S锁),用于读取数据;排他锁(X锁),用于写入数据;更新锁(U锁),在读取并可能更新数据时使用;意向锁...

    SQLServer+ 免安装版

    SQLServer+ 免安装版 SQLServer+是在原有SQLServer2000的基础上改善了数据库安装的繁锁性,让软件企业在发布基于SQLServer2000数据库软件的时候,只要把软件打包进入安装包而不需要再单独安装数据库,也不需要另外...

    sql server数据锁自动检测,释放

    SQL Server 数据库管理系统在执行并发操作时,为了保证数据的一致性和完整性,采用了锁机制来管理数据资源。数据锁是数据库管理系统中用于控制多个用户同时访问同一数据时的一种同步机制。当多个事务试图同时修改...

    SQL Server 的事务和锁

    SQL Server的事务和锁是数据库管理系统中至关重要的概念,它们保证了数据的一致性和完整性,为多用户环境下的并发操作提供了保障。以下是对这些主题的详细解析: **SQL事务** SQL事务是数据库操作的基本单元,它...

    SQL SERVER 2008 R2 查看和杀死死锁进程

    SQL SERVER 2008 R2 查看和杀死死锁进程。数据库进程死锁是一个很严重的问题,快速定位到死锁的进程尤为重要。

    Spotlight on SQL Server

    8. **资源管理**:通过Spotlight,管理员可以了解SQL Server的资源使用情况,如内存分配、锁和事务管理,以便进行合理的资源调配,避免资源浪费。 9. **报告和可视化**:高级的监控工具往往提供丰富的报告功能,...

    sql server 直接读取excel

    - 如果需要将Excel数据处理后再进行操作,可以先将数据插入到SQL Server的临时表中: ```sql CREATE TABLE #tempTable (Column1 datatype, Column2 datatype, ...); INSERT INTO #tempTable EXEC sp_execute...

    SQL server 自旋锁争用专题

    SQL Server自旋锁争用是一个高级数据库管理问题,通常出现在高性能、高并发的系统中。自旋锁是操作系统中的一个同步机制,用于控制对共享资源的访问。在数据库系统中,自旋锁用于保护数据结构在并发访问时的完整性。...

    sql server 数据库巡检

    包括检查数据库的磁盘空间使用信息、日志文件大小及使用情况、表的磁盘空间使用信息、磁盘读写情况、I/O 工作情况、锁与等待、死锁、用户和进程信息、活动用户和进程的信息、SQL Server 的实际内存占用、所有数据库...

Global site tag (gtag.js) - Google Analytics