#title SQL Server ETL Meta Data [[TableOfContents]] ==== 문서화! 문서화? ==== 누가 알려준 방법은 아니고, Microsoft SQL Server에서 ETL Meta Data에 대한 고민을 하다가 생각해낸 것이다. 일단 문서화하면 현실과의 불일치성이 없게 하기 위한 지속적인 노력이 필요하다. 내가 보기엔 소프트웨어 문서화의 유지보수가 가장 힘든 작업이다. 문서화 해봐야 문서화를 문서화나 창고에 박혀있는 문서가 되기 일쑤다. 그래서 생각한 방법이 이 방법이다. 언제나 DB쟁이들과 가까이 있는 것이 그래도 최대한 현실과의 일치성을 유지하는 최고의 방법이라 생각했다. 방법은 간단하다. 확장속성을 이용하는 것이다. 문서화가 아닌 ETL Meta Data의 DB화다. ==== 참고 소스 ==== {{{ /* 테이블 컬럼의 확장속성을 이용한다. - 소스 IP - 소스 DB - 소스 Schema - 소스 테이블 - 소스 컬럼 - ETL Rule */ EXEC sys.sp_addextendedproperty @name = N'소스IP' , @value = N'192.168.0.1' , @level0type = N'SCHEMA' , @level0name = N'Common' , @level1type = N'TABLE' , @level1name = N'테이블명' , @level2type = N'COLUMN' , @level2name = N'컬럼명' GO SELECT 'EXEC sys.sp_addextendedproperty ' + CASE WHEN B.Seq = 1 THEN 'N''1. Source IP'', '''', ' WHEN B.Seq = 2 THEN 'N''2. Source DB'', '''', ' WHEN B.Seq = 3 THEN 'N''3. Source Schema'', '''', ' WHEN B.Seq = 4 THEN 'N''4. Source Table'', '''', ' WHEN B.Seq = 5 THEN 'N''5. Source Column'', '''', ' WHEN B.Seq = 6 THEN 'N''6. ETL Rule'', '''', ' END + 'N''SCHEMA'', N''' + TABLE_SCHEMA + ''', ' + 'N''TABLE'', N''' + TABLE_NAME + ''', ' + 'N''COLUMN'', N''' + COLUMN_NAME + '''' FROM INFORMATION_SCHEMA.COLUMNS CROSS JOIN ( SELECT 1 Seq UNION ALL SELECT 2 Seq UNION ALL SELECT 3 Seq UNION ALL SELECT 4 Seq UNION ALL SELECT 5 Seq UNION ALL SELECT 6 Seq) B --WHERE TABLE_NAME = '테이블명' }}}