1 / 1
"GetTableDescription"으로 검색하여,
2 건의 기사가 검색 되었습니다.
-
2014-05-06MSSQL의 다이어그램은 복잡한 디자인을 한 곳에서 통합 관리 할 수 있어 별도의 ERD가 사실 필요가 없다각 컬럼에 대한 설명도 추가할 수 있고 필자가 소개한 sp_GetTableDescription 을 이용하면 다큐멘트 작성시도 상당한 시간 절약을 할 수 있다.다이어그램 생성하기SSMS에서 작업할 데이타베이스를 선택하고 첫번쨰 항목인 데이타베이스 다이어그램에서 팝업메뉴(마우스우측 버튼 클릭시 나오는)에서 "새 데이타베이스 다이어그램"을 선택한다.처음 생성하게되면 해당 데이타베이스에 테이블이 존재하는 경우 테이블 정보를 포함 할 것인지를 물어보는 다이얼러그가 나오는데 원하는 테이블이 있으면 선택한다.컬럼설명 추가기본 보기에서는 테이블 설명이 나오지 않아 편집을 할 수 없다, 테이블의 팝업 메뉴에서 "테이블뷰"를 선택하고 "사용자 지정 수정"을 선택한다.선택화면에서 "설명"을 선택하고 ">" 버튼을 눌러 오른쪽 목록에 추가 한 후 "확인"을 누른다.다시 테이블의 팝업메뉴에서 "테이불뷰"를 "사용자 지정"으로 선택한다.이제 설명부분이 추가 되었다.다이어그램 저장SSMS에선 기본설정이 테이블 수정(alter table)에 대한 것이 적용되지 않토록 막혀있다. 해당 옵션을 해제해주어야만 수정 내용의 저장이 가능 하다.메뉴 "도구"에서 "옵션"을 선택한다.옵션 창에서 "디자이너"의 "테이블을 다시 만들어야 하는 변경 내용 저장 안함"을 해제 한다.
-
MS-SQL을 즐겨쓰는 가장 큰 이유 중 하나가 바로 다이어그램이다.별도의 적용 없이 DB에 바로 적용이 가능하다는 점이 여러모로 시간을 허비하지 않아서인것 같다.다이어그램의 테이블에 커스텀모드로 하면 각 컬럼의 설명을 추가 할 수 있다.프로젝트의 결과물을 만들때 문서 두께의 상당부분을 차지하는게 DB(Table)명세서 인데, 이것의 작성 시 DB에 존재하는 다이어그램에서 결과물을 만들 수 있으면 시간 절약이 많이 될듯하여 만들었던 SP 이다.sp_help의 "컬럼설명" 추가 버전이라고 봐도 무방 할것 같다.처음 작성시는 2000을 기준으로 만들어 졌으나 2008에서는 시스템 테이블 부분이 바뀌어서 2008에 맞게 프로그램을 수정 했다.syntax: sp_GetTableDescription [테이블명]* 테이블명 : 설명을 보고자 하는 테이블명, 생략하는 경우 db내의 모든 테이블의 내용이 테이블, 컬럼순서 순으로 나오게 된다* 테이블명이 생략되면 현재 사용 DB의 전체 테이블 컬럼이 나온다.(문서 작성시 유용)/*Prog. by: IKK, Dec-2008http://www.wdev.co.kr update: Jun-2009 = debug null description = except 'sysname' type update: Apr-2012 = for SQL2008 (change system tables) */ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_GetTableDescription]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[sp_GetTableDescription]GO SET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOCREATE PROCEDURE sp_GetTableDescription @TableName varchar(255) = nullASset nocount onif @TableName is NULLbegin select c.id, c.colid as No, o.name as TableName, c.name as ColumeName, t.name as type, c.length, c.colstat as Identy, c.isnullable, description = Convert(sql_variant,'') into #GTD from sys.syscolumns c, sys.sysobjects o, sys.systypes t where c.id=o.id and c.xtype=t.xtype and o.Type='U' and not t.name='sysname' update #GTD set description=p.value from #GTD a, sys.extended_properties p where a.id=p.major_id and a.no=p.minor_id and p.name = 'MS_Description' select TableName, no, ColumeName, type, length, Identy, [null] = case isnullable when 1 then 'not NULL' else 'NULL' end, description from #GTD order by id, noendelsebegin select c.id, c.colid as No, o.name as TableName, c.name as ColumeName, t.name as type, c.length, c.colstat as Identy, c.isnullable, description = Convert(sql_variant,'') into #GTD2 from sys.syscolumns c, sys.sysobjects o, sys.systypes t where c.id=o.id and c.xtype=t.xtype and not t.name='sysname' and o.Name = @TableNameupdate #GTD2 set description=p.value from #GTD2 a, sys.extended_properties p where a.id=p.major_id and a.no=p.minor_id and p.name = 'MS_Description' select no, ColumeName, type, length, Identy, [null] = case isnullable when 0 then 'not NULL' else 'NULL' end, description from #GTD2 order by noend return(0) SET QUOTED_IDENTIFIER OFF go SET ANSI_NULLS ON go**** 실 서버에선 SQL-injection에서 테이블 정보가 상세하게 노출될 위험이 있으니, 되도록 개발 서버쪽에서만 사용하는 것을 추천 함
1
