Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема как на sql2000 посмотреть какие объекты блокирован (число прочтений - 1336 )
dimm73
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 414
Зарегистрирован: 03. Июля 2006
Пол: Мужской
как на sql2000 посмотреть какие объекты блокирован
28. Мая 2008 :: 10:39
Печать  
как на sql2000 посмотреть какие объекты блокированы и желательно кем?
прошу сильно не пинать, только недавно узучаю sql
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: как на sql2000 посмотреть какие объекты блокир
Ответ #1 - 28. Мая 2008 :: 13:28
Печать  
dimm73 писал(а) 28. Мая 2008 :: 10:39:
как на sql2000 посмотреть какие объекты блокированы и желательно кем?

BOL: sp_lock

много букв
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: как на sql2000 посмотреть какие объекты блокир
Ответ #2 - 28. Мая 2008 :: 14:04
Печать  
Как-то давно позаимствовал SP у Вьейры и было это удобно (это небольшая модификация sp_lock).

Код
Выбрать все
USE master
GO

CREATE PROC sp_DBLocks
	@DBNameIn 	sysname 	 = NULL,
	@ObjName 	sysname 	 = NULL

WITH RECOMPILE
AS
/* Sproc Authored and Copyright By Robert M. Vieira, MCDBA 1999, 2000	*/
/* This sproc is made availabe for public, non-commercial use  	        */
/* All other rights reserved						*/

-- Declare holding variable for dynamic query
DECLARE @cmd 		varchar(1000)
DECLARE @DBName		sysname

-- If no database was supplied, then assume current database
SELECT @DBName = ISNULL(@DBNameIn, DB_NAME())

-- Verify that the supplied database exists
IF NOT EXISTS (SELECT * FROM master.dbo.sysdatabases (NOLOCK)
	WHERE Name = @DBName)
	BEGIN
		RAISERROR(15010,1,1,@DBname) WITH SETERROR
		RETURN 15010
	END



-- Build it (and they will come...)
SELECT @cmd =
'	SELECT 	convert (smallint, req_spid) As spid,
		rsc_dbid As dbid,
		rsc_objid As ObjId,
		so.Name As ObjectName,
		rsc_indid As IndId,
		substring (v.name, 1, 4) As Type,
		substring (rsc_text, 1, 16) as Resource,
		substring (u.name, 1, 8) As Mode,
		substring (x.name, 1, 5) As Status

	FROM 	master.dbo.syslockinfo sli (NOLOCK)
	JOIN	master.dbo.spt_values v (NOLOCK)
	  ON		sli.rsc_type = v.number
	 AND		v.type = ''LR''
	JOIN	master.dbo.spt_values x (NOLOCK)
	  ON		sli.req_status = x.number
	 AND		x.type = ''LS''
	JOIN	master.dbo.spt_values u  (NOLOCK)
	  ON		sli.req_mode + 1 = u.number
	 AND		u.type = ''L''
	JOIN	master.dbo.sysdatabases sd  (NOLOCK)
	  ON		sli.rsc_dbid = sd.dbid
	JOIN	' + @DBName + '.dbo.sysobjects so  (NOLOCK)
	  ON		sli.rsc_objid = so.id
	WHERE	sd.name = ''' + @DBName + ''''

-- If an object name was supplied, add the piece that will restrict to supplied name
-- Otherwise, leave it off to get all objects in the specified DB
IF NOT (@ObjName IS NULL)
	SELECT @CMD = @CMD + 	 ' AND	so.Name = ''' + @ObjName + ''''

-- I'm Ordering by spid, but by Object Name seems a likely candidate if one wasn't supplied
SELECT @CMD = @CMD + '    ORDER BY	spid'

-- Create a little header
IF @ObjName IS NULL
	PRINT 'Resource Locks for Database ' + @DBName
ELSE
	PRINT 'Resource Locks for Database ' + @DBName + ', Resource ' + @ObjName

-- We've built it, time for them to come....
EXEC (@cmd)

-- Hopefully, this is zero
RETURN @@ERROR

GO
 

  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать