[À§·Î]

<¿øÀÎ>

<SQL¹®>


CREATE PROC sp_block
AS
set nocount on
IF NOT EXISTS (SELECT * FROM sysprocesses WHERE spid IN
(SELECT blocked FROM sysprocesses )
)
BEGIN
PRINT 'No one is blocked'
RETURN
END

SELECT spid, blocked, status,
loginame,
hostname,
dbname = substring(db_name(dbid), 1, 10)
, cmd
into #tmp
FROM sysprocesses
WHERE blocked <> 0
OR ( spid IN (SELECT blocked FROM sysprocesses))
order by spid

select * from #tmp --Â÷´ÜµÈ ÇÁ·Î¼¼½º¸¦ º¸¿©ÁØ´Ù.

--ÀÌÁ¦ dbcc inputbuffer¸¦ ¼öÇàÇÑ´Ù.
CREATE TABLE #dbcc (
id int identity
, spid int null
, eventType varchar(255) null
, parameters int null
, eventInfo varchar(255) null
)

DECLARE c1 CURSOR READ_ONLY
FOR SELECT spid FROM #tmp

DECLARE @spid int
OPEN c1

FETCH NEXT FROM c1 INTO @spid
WHILE (@@fetch_status =0)
BEGIN
DECLARE @message varchar(100)
SELECT @message = 'dbcc inputbuffer (' + convert(varchar(30), @spid) + ')'
-- print @message
INSERT #dbcc (eventType, parameters, eventInfo)
exec (@message)
UPDATE #dbcc SET spid = @spid WHERE id = @@identity
FETCH NEXT FROM c1 INTO @spid
END

DEALLOCATE c1

SELECT * FROM #dbcc

<Á¶Ä¡ »çÇ×>

  1. Â÷´ÜµÈ ÇÁ·Î¼¼½º Kill (ÃÖ¾ÇÀÇ »çÇ×)
  2. °Ý¸® ¼öÁØ Á¶Á¤ (SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED)
  3. Àӽà Table »ç¿ë ±ÝÁö (Å×ÀÌºí º¯¼ö »ç¿ë)

<±âŸ>

  1. ÀÛ¾÷ ½ºÄÉÁìÀ» ÅëÇÑ Á¤±âÀûÀÎ ¸ð´ÏÅ͸µ °¡´É (1ºÐ ´ÜÀ§·Î ¼öÇà, Lock ¹ß»ý½Ã ¸ÞÀÏ ¹ß¼Û ¹× Lock ÇöȲ ÀúÀå