'DMV'에 해당되는 글 2건

  1. Table을 참조하는 object를 syscomments에서 DMV로 바꾸어 보아요
  2. SQL Dump 파일 확인 1

sys.dm_sql_referencing_entities DMV는 지정된 엔터티를 참조하는 현재 데이터베이스에 있는 다음과 같은 엔터티 유형의 행을 반환합니다 

참고 링크

   

사용가능 버전 SQL2008, SQL2008R2+, SQL2012   

지정된 엔터티를 참조하는 현재 데이터베이스에 있는 다음과 같은 엔터티 유형을 알 수 있습니다.

  • 스키마 바운드 또는 비스키마 바운드 엔터티
  • 데이터베이스 수준 DDL 트리거
  • 서버 수준 DDL 트리거

   

이 DMV는 언제 사용할까요? 사실 오늘 저도 처음 사용해 보았어요. 테이블 이름을 변경했지만 관련된 프로시져나 뷰가 어디서 사용하는지 찾는 방법을 이전에는 syscomments라는 것을 사용했습니다. 상세 정보는 여기를 참고하세요. SQL2008 이후 버전에서는 sys.dm_sql_referencing_entities DMV를 사용하면 됩니다.   

   

테스트 용 table, procedure 생성

CREATE TABLE [dbo].[tbl1](
	[Name] [char](10) NOT NULL,
	[Param] [float] NOT NULL
)
GO

create index idx_tbl1_name on dbo.tbl1 ( name );


CREATE TABLE [dbo].[tbl2](
	[name] [char](10) NOT NULL,
	[upper] [varchar](256) NOT NULL
)
GO

CREATE PROCEDURE dbo.UspGetParam
AS	
	SELECT 
	*
	FROM [dbo].[tbl1]
GO
CREATE PROCEDURE dbo.UspGetREParam
AS	
	SELECT 
	*
	FROM [dbo].[tbl2]
GO

   

SQL2000 버전

-- SQL 2000
-- 뷰, 규칙, 기본값, 트리거, CHECK 제약 조건, DEFAULT 제약 조건 및 저장 프로시저에 대한 항목
SELECT A.name ProcedureName
FROM sysobjects A, syscomments B
WHERE A.id = B.ID
	AND B.text LIKE '%' + @objNm + '%';	

   

SQL2008+ 버전

-- SQL 2008+
-- 위의 내용 포함 데이타베이스 수준 DLL 트리거, 서버 수준의 DLL 트리거
with cte_object
as
(
	select 
		objectnm = t2.name + '.' + t1.name, type_desc
	from sys.tables t1
		inner join sys.schemas t2
			ON t1.schema_id = t2.schema_id
	where t1.name LIKE @objNm + '%'
) 
select *
from cte_object t1
	cross apply sys.dm_sql_referencing_entities(t1.objectnm, 'OBJECT') t2 ;
Go

SQL Dump 파일 확인

  1. DMV 파일 확인

       

DMV를 활용하여 Dump 파일이 생성되었는지 확인이 가능하다.(SQL2008R2 이상+)

두 번에 걸쳐 dump파일이 생성됨을 확인할 수 있다.

   

  1. 디렉토리 확인

   

각 덤프마다 txt, crash dump file, bug check dump

   

Crashdump file 더블 클릭해서 실행하면 미니 덤프으로 요약 정보를 확인할 수 있다.

   

'Transact-SQL' 카테고리의 다른 글

Data reset for a DMV  (0) 2013.01.04
Suspect page 검사하기  (0) 2012.11.15
DirtyPage DMV  (0) 2012.10.11
relog 사용 방법  (0) 2012.09.28
UPDLOCK  (0) 2012.09.20