Reporting Service와 Microsoft SQL Server Management Studio

오늘 테이블정의서를 뽑는 툴을 찾다가 짜증이 나서 담배를 피고 있는데..

리포팅 서비스를 이용해보면 어떨까 해서리..

대충 잘 되는지 해보았다. 잘된다..

잘 이용하면 .rdl 파일만 들고 다니면서 연결문자열 정도만 수정하면 DBA에게는 매우 좋은 툴이 되리라

생각해다. .. 안 좋나?? 허허

 

 

 

1. [시작]->[프로그램]->[SQL Server 2005]->[ SQL Server Business Intelligence Development Studio] 선택

2. [파일]->[새로만들기]->[프로젝트]->[보고서 서버 프로젝트 마법사]

 


마법사가 시작되는데 걍 취소한다.

 


3.
솔루션 탐색기에서 [보고서] 디렉토리에서 마우스 오른키 후 [새 보고서 추가] 선택. 그럼 마법사가 뜬다.

 


4. [
다음] 클릭

 


5.
데이터 원본을 편집한다.

 


6.
적당히 편집 후 확인 버튼 클릭

 


7.
연결문자열 확인 후 [다음] 클릭

 


8.
다음의 sql script를 쿼리 문자열에 넣는다. 그리고 [다음]클릭



--테이블

select

             a.name schema_name

,            isnull(

                           case

                                        when c.column_id = 1 then b.name

                                        when c.column_id = 2 then d.table_name

                           else '' end, '') table_name

,            c.name column_name

,            isnull(d.column_name, '') column_desc1

,            isnull('(PK, ' + convert(varchar, e.type_desc) + ') ', '') + isnull('(FK,' + object_name(f.referenced_object_id), '') column_desc2

,            g.name date_type

,            case when g.name IN ('nchar', 'nvarchar') AND c.max_length <> -1 then c.max_length/2 else c.max_length end column_length

,            c.precision

,            c.scale

,            case when c.is_nullable = 1 then 'NULL' else 'NOT NULL' end is_nullable

,            case

                           when c.is_identity = 1 then

                                                                                                                       (select '(' + convert(varchar, seed_value)  + ',' + convert(varchar, increment_value) + ')'

                                                                                                                       from sys.identity_columns where b.object_id = object_id)

                           else ''

             end is_identity

--,         isnull(h.name, '') default_constraints

,            isnull(h.definition, '') default_value

from sys.schemas a inner join sys.objects b

on a.schema_id = b.schema_id inner join sys.all_columns c

on b.object_id = c.object_id

and b.type = 'U' left join (

                                                                                             select

                                                                                                          a.major_id object_id

                                                                                             ,            b.minor_id column_id

                                                                                             ,            a.value table_name

                                                                                             ,            b.value column_name

                                                                                             from sys.extended_properties a inner join sys.extended_properties b

                                                                                             on a.major_id = b.major_id

                                                                                             and b.minor_id > 0

                                                                                             and a.minor_id = 0) d

on c.object_id = d.object_id

and c.column_id = d.column_id left join (

                                                                                                                                     select

                                                                                                                                                  a.object_id

                                                                                                                                     ,            a.column_id

                                                                                                                                     ,            b.type_desc

                                                                                                                                     from sys.index_columns a inner join sys.indexes b

                                                                                                                                     on a.object_id = b.object_id

                                                                                                                                     and a.index_id = b.index_id

                                                                                                                                     and b.is_primary_key = 1

                                                                                                                                     ) e

on b.object_id = e.object_id

and c.column_id = e.column_id left join sys.foreign_key_columns f

on b.object_id = f.parent_object_id

and c.column_id = f.parent_column_id inner join sys.types g

on c.system_type_id = g.system_type_id

and c.user_type_id = g.user_type_id left join sys.default_constraints h

on c.default_object_id = h.object_id

where b.name <> 'sysdiagrams'

order by b.name , b.object_id, c.column_id

 

 

9. 나머지는 귀찮으니까 걍 [마침]누르자.

 


10. ‘
테이블정의서라고 이름을 넣고 마치자.

 


11.
적당히 리포트 레이아웃을 꾸민다. ..간격조절 정도? 나머지는 홈페이지의 (요기) 참고

 


12.
이런식으로 다음의 SQL을 이용하여 인덱스보고서를 만든다.

--인덱스

select

             c.name table_name

,            b.name index_name

,            b.type_desc index_type

,            b.is_primary_key

,            b.is_unique

,            b.fill_factor

,            b.allow_row_locks

,            b.allow_page_locks

from sys.index_columns a inner join sys.indexes b

on a.object_id = b.object_id

and a.index_id = b.index_id inner join sys.objects c

on a.object_id = c.object_id

and c.type = 'U'

where c.name <> 'sysdiagrams'

 

13. 저장하고 프로젝트를 닫아버리자. 그리고 프로젝트 파일들이 모인 디렉토리에서

- 테이블정의서.rdl

- 인덱스정의서.rdl

 

을 바탕화면에 복사한다.

 

14. Microsoft SQL Server Management Studio로 가서 다음과 같이 사용자 지정보고서를 선택한다.

 


15.
아까 만들었던 테이블정의서.rdl'을 선택한다.

 


16.
다음과 같은 경고창이 뜬다. 무시하고 [실행]한다.

 


17.
오오~ 잘나온다. ㅋㅋ. 인덱스 정의서도 이런식으로 만들어보면 좋겠당.

 

 

 

by 이재학 | 2007/10/08 18:20 | MS-SQL2005 | 트랙백 | 덧글(2)
트랙백 주소 : http://dbstroy.egloos.com/tb/842235
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 검풍이 at 2009/02/16 17:35
유용한 정보 감사합니다^^
퍼갈게요~~
혹시 퍼가면 안되는 자료시라면 말씀해주시면 삭제하도록 하겠습니다^^;;
Commented at 2011/02/10 11:51
비공개 덧글입니다.

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >