Database/MS SQL

procedure에 종속된 잘못된 테이블 찾기

catchv 2013. 2. 26. 18:20
반응형

테이블 변경이 가해지는 경우 프로시져에 문제가 발생할 수 있다.

그런 경우를 예방하기 위해서 MS SQL에서는  DMV를 제공한다.

아래 내용은 MSDN의 내용중 프로시져에 관련된 내용을 옭겨 놓은 것이다.

4.비스키마 바운드 열 종속성 반환

다음 예에서는 Table1을 삭제하고 Table2 및 저장 프로시저 Proc1을 만듭니다.이 프로시저는 Table2 및 존재하지 않는 테이블 Table1을 참조합니다.저장 프로시저가 참조 엔터티로 지정되어 sys.dm_sql_referenced_entities 뷰가 실행됩니다.결과 집합에는 Table1에 대한 행 하나와 Table2에 대한 행 세 개가 표시됩니다. Table1이 없기 때문에 열 종속성을 확인할 수 없고 오류 2020이 반환됩니다. is_all_columns_found 열은 Table1에 대해 검색할 수 없는 열이 있음을 나타내는 0을 반환합니다.

Transact-SQL
USE AdventureWorks2012;
GO
IF OBJECT_ID ( 'dbo.Table1', 'U' ) IS NOT NULL 
    DROP TABLE dbo.Table1;
GO
CREATE TABLE dbo.Table2 (c1 int, c2 int);
GO
CREATE PROCEDURE dbo.Proc1 AS
    SELECT a, b, c FROM Table1;
    SELECT c1, c2 FROM Table2;
GO
SELECT referenced_id, referenced_entity_name AS table_name, referenced_minor_name AS referenced_column_name, is_all_columns_found
FROM sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO

 

다른 여러가지 기능도 제공하므로 한 번 MSDN에서 내용을 확인 하는 것도 좋을 것 같다. 


MSDN : http://msdn.microsoft.com/ko-kr/library/bb677185.aspx

반응형