SQL Server 查看数据库是否存在阻塞

 1 CREATE  procedure [dbo].[sp_who_lock]
 2 as
 3 begin
 4 declare @spid int,@bl int,
 5         @intTransactionCountOnEntry  int,
 6         @intRowcount    int,
 7         @intCountProperties   int,
 8         @intCounter    int
 9  create table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)
10
11  IF @@ERROR<>0 RETURN @@ERROR
12
13  insert into #tmp_lock_who(spid,bl) select  0 ,blocked
14    from (select * from master..sysprocesses where  blocked>0 ) a
15    where not exists(select * from (select * from master..sysprocesses where  blocked>0 ) b
16    where a.blocked=spid)
17    union select spid,blocked from master..sysprocesses where  blocked>0
18
19  IF @@ERROR<>0 RETURN @@ERROR
20
21 -- 找到临时表的记录数
22  select  @intCountProperties = Count(*),@intCounter = 1
23  from #tmp_lock_who
24
25  IF @@ERROR<>0 RETURN @@ERROR
26
27  if @intCountProperties=0
28   select ‘现在没有阻塞和死锁信息‘ as message
29
30 -- 循环开始
31 while @intCounter <= @intCountProperties
32 begin
33 -- 取第一条记录
34   select  @spid = spid,@bl = bl
35   from #tmp_lock_who where id = @intCounter
36  begin
37   if @spid =0
38     select ‘引起数据库死锁的是: ‘+ CAST(@bl AS VARCHAR(10)) + ‘进程号,其执行的SQL语法如下‘
39  else
40     select ‘进程号SPID:‘+ CAST(@spid AS VARCHAR(10))+ ‘被‘ + ‘进程号SPID:‘+ CAST(@bl AS VARCHAR(10)) +‘阻塞,其当前进程执行的SQL语法如下‘
41  DBCC INPUTBUFFER (@bl )
42  end
43
44 -- 循环指针下移
45  set @intCounter = @intCounter + 1
46 end
47
48
49 drop table #tmp_lock_who
50
51 return 0
52 end
时间: 2024-10-06 02:39:05

SQL Server 查看数据库是否存在阻塞的相关文章

SQL Server 查看数据库在数据缓存(data cache)中占用的空间大小

1 use master 2 go 3 select * from sys.dm_os_buffer_descriptors 4 go 5 6 --查看数据库在数据缓存(data cache)中占用的空间大小 7 --由于每个数据页对应动态管理视图(dynamic management view,DMV)中的一行,为128 字节,为1/8个千字节(KB) 8 --1字节(Byte)=8位(Bit) 9 --1千字节(KB)=1024字节(Byte) 10 --1兆(MB)=1024千字节(KB)

SQL SERVER 查看数据库信息

a.使用sys.database_files查看有关数据库文件的信息 b.使用sys.filegroups查看有关数据库组的信息. c.使用sys.master_files 查看数据库文件的基本信息和状态信息. d.使用sys.databases 数据库和文件目录视图查看有关数据库的基本信息. e.g. select * from sys.database_files; select * from sys.filegroups; select * from sys.master_files; s

SQL Server 查看数据库空间分配情况的 2 种方法

方法 1. sys.dm_db_file_space_usage. 方法 2. sys.dm_db_session_space_usage. -------------------------------------------------------------------------------------------------------------------------------------------------------------- 方法 1 . sys_dm_db_fil

SQL Server -查看数据库扩展属性

1.fn_listextendedproperty 函数可以基于对象类型显示单个数据库对象或数据库中所有对象的扩展属性.例如,可以返回表或表中所有列的扩展属性. A.下面的示例显示了数据库本身设置的所有扩展属性. USE AdventureWorks2008R2; GO SELECT objtype, objname, name, value FROM fn_listextendedproperty(default, default, default, default, default, def

sql server 2012数据库镜像

sql server 2012数据库镜像 以下通过域帐户来配置数据库镜像: 一.环境准备 1.准备计算机 AD02为域控制器/DNS服务器(sz1card1.com),IP:192.168.2.218/24,AD02安装成为域控制器.DNS服务(这里不做演示) W67为主体服务器,IP:192.168.2.67/24,安装SQL SERVER 2012 企业核心版(这里不做演示) W65为镜像服务器,IP:192.168.2.65/24,安装SQL SERVER 2012 企业核心版(这里不做演

通过SQL Server 2008数据库复制实现数据库同步备份

SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主数据库服务器,备份服务器只在主服务器出现故障时投入使用.它是一种优于文件备份的数据库备份解决方案. 在选择数据库同步备份解决方案时,我们评估了两种方式:SQL Server 2008的数据库镜像和SQL Server 2008数据库复制.数据库镜像的优点是系统能自动发现主服务器故障,并且自动切换至镜

SQL Server附加数据库出现错误5123的正确解决方法

SQL Server附加数据库出现错误5123的正确解决方法 因为自己有一本基于SQL Server 2005的数据库教程,里边使用的示例数据库是AdventureWorks for SQL Server 2005,而我的机子上装的是SQL Server 2008,示例数据库是AdventureWorks for SQL Server 2008.起初我以为示例数据库AdventureWorks for SQL Server 2005 与AdventureWorks for SQL Server

使用Source Safe for SQL Server解决数据库版本控制问题

简介 在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多个版本,而不会将代码库变得混乱,典型的场景包括Bug修复.添加新功能.版本整合等. 虽然在开发层面的版本控制软件已经非常成熟,但目前国内还没有专门针对数据库层面的版本控制软件来帮助不同角色的人员在数据库层面进行团队协作.变更代码管理以及对数据库的变更进行查看和比对.在数据库层面版本控制工具的缺乏可能会出现如

SQL Server tempdb 数据库位置迁移

SQL Server tempdb 数据库位置迁移 --查看物理位置 SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('tempdb'); --修改路径 ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'D:\DataBaseNew\tempdb.mdf'); ALTER DATABASE tempdb MODIFY F