문제를 행정 중심적으로 하는 것이 아닌!!

관련된 사람 중심으로 "명확한" 해결책을 제시할 줄 아시는 분!!!

이 분이 그립습니다.ㅠㅠ

본 게시물의 사진에 나타난 것 외에 이 분의 생각이 가장 극명하게 드러난 것이 있었죠.

일전의 '삼성'이 저지른 태안 기름 유출 사고.

거기서의 일침 또한 그립네요.

바로 찾아서 포스팅해야겠습니다!!!
테이블 설계를 변경해야 하는 경우
해당 테이블을 사용하는 STORED PROCEDURE, STORED FUNCTION 등을 찾아야 하는 데요.
그래야 변경을 할 것인지 아닌지를 결정할 수 있고, 변경할 수 있는 범위를 가늠할 수도 있고요.
이 또한 문서화가 제대로 되어있지 않을 수 밖에 없으니..

특정 테이블을 사용하는 PROCEDURE를 찾는 쿼리입니다.

SELECT 
    DISTINCT O.NAME
FROM 
    SYSDEPENDS AS D
INNER JOIN 
    SYSOBJECTS AS O 
ON 
    D.ID = O.ID
WHERE 
    O.XTYPE = 'P' 
	AND D.DEPID = 
	    (
    	    SELECT 
    	        ID 
    	    FROM 
    	        SYSOBJECTS 
    	    WHERE 
    	        NAME = '테이블명'
	    )

한계는 존재합니다. 테이블이 정의된 CATEGORY와 동일한 CATEGORY 내에 존재하는 STORED PROCEDURE만 찾을 수 있다는 것인데요.
물론, 다른 CATEGORY에 정의된 테이블을 사용하는 게 옳은 지에 대해서는 저는 아직 잘 모르겠습니다.
다만 가급적 안하는 게 좋겠죠. 하지만 그런 경우 자체는 존재하니.ㅠㅠ
차라리 다른 CATEGORY에 존재하는 TABLE의 내용을 사용하고 싶은 경우에는 TABLE 자체를 자신의 CATEGORY로 자동으로 MIRRORING해주는 게 맞을 듯 합니다. 실시간으로 해주고 싶다면, TRIGGER도 있고, 사용이 잘 안되는 시간대에 이벤트로 변경된 것만 긁어와도 되고, 방법이야 많으니까요. ㅎㅎ

'배움 > MS-SQL' 카테고리의 다른 글

특정 테이블을 사용하는 STORED PROCEDURE 찾기  (2) 2012.03.08
TABLE COLUMN 정보 확인 QUERY  (0) 2012.03.08

DATABASE 테이블에 대한 설계 문서는 가장 중요합니다.
하지만, 실상 문서 자체가 현 상태를 제대로 설명해주는 경우는 잘 없습니다.
그래서 확인해야 할 경우가 존재하는 데요.
아래 쿼리를 사용하면 됩니다.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '테이블명' ORDER BY ORDINAL_POSITION
각 COLUMN이 NULLABLE인지 아닌지, 그 데이터 타입이 무엇인지 등을 확인할 수 있습니다.
그리고 덤으로 해당 테이블의 PRIMARY KEY인 COLUMN을 확인할 수 있는 QUERY도 아래에 두겠습니다.
SELECT 
    COLUMN_NAME
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE 
    OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME), 'ISPRIMARYKEY') = 1
    AND 
        TABLE_NAME = '테이블명'
이 역시 테이블 정보를 확인하는 데, 필수적인 정보겠죠.

종종 쓸 수 밖에 없는 QUERY라서 BACKUP용도로 포스팅합니다.^^


'배움 > MS-SQL' 카테고리의 다른 글

특정 테이블을 사용하는 STORED PROCEDURE 찾기  (2) 2012.03.08
TABLE COLUMN 정보 확인 QUERY  (0) 2012.03.08