2016-08-11 2 views
0

전체 데이터베이스 스키마를 XML 파일로 내보내고 싶습니다. 거기에 필요한 정보.데이터베이스 스키마를 XML 파일로 내보내기

  1. 테이블 - 열, 데이터 타입, FK, PK,
  2. 뷰 - 인수 열 및 데이터 유형을 리턴 - 열
  3. 기능 및 저장 프로 시저 리턴.

Google 등에서 아무것도 찾을 수 없습니다. 비슷한 문제에 직면 한 사람이 있습니까?

+0

이 모든 것을 스크립트로 작성한 다음 xml로 변환 할 수 있습니까? 지금까지 뭐 해봤 어? – NickyvV

+0

나는 SQL이 너무 좋지 않다. 지금까지 테이블로 어떻게 할 수 있는지 발견했지만 뷰, 함수 및 SP도 필요합니다. –

답변

1

이 쿼리함으로써 당신은 테이블과 뷰를 얻을 수 있습니다 :

SELECT TABLE_NAME AS '@Name', CASE WHEN TABLE_TYPE = 'BASE TABLE' THEN 'Table' ELSE 'View' END AS '@Type', 
(
    SELECT Column_Name as '@Name', 
      DATA_TYPE as '@DataType', 
      case data_type 
       when 'nvarchar' 
       then CHARACTER_MAXIMUM_LENGTH 
       when 'varchar' 
       then CHARACTER_MAXIMUM_LENGTH 
       else null 
      end as '@Length', 
      IS_NULLABLE AS '@IsNullable', 
      COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'IsIdentity') AS '@IsIdentity', 

      (SELECT tc.CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc 
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE cu ON tc.CONSTRAINT_NAME = cu.CONSTRAINT_NAME 
WHERE tc.TABLE_NAME = INFORMATION_SCHEMA.COLUMNS.TABLE_NAME AND cu.COLUMN_NAME = INFORMATION_SCHEMA.COLUMNS.Column_Name) AS '@Constraint' 

    FROM INFORMATION_SCHEMA.COLUMNS 
    where INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 
     INFORMATION_SCHEMA.TABLES.TABLE_NAME 
    order by INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION 
    For XML PATH ('Column'), type 
) 

FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA='dbo' 
ORDER BY TABLE_NAME ASC 
For XML PATH ('Table'),Root('Tables') 

이를 SPS 및 FNS을 위해.

SELECT 
     SPECIFIC_SCHEMA  AS '@ObjectSchema' 
     ,ROUTINE_NAME  AS '@ObjectName' 
     ,ROUTINE_TYPE  AS '@ObjectType' 
     ,ROUTINE_DEFINITION AS '@TEXT' 
FROM INFORMATION_SCHEMA.ROUTINES 
WHERE (ROUTINE_TYPE = 'function' OR ROUTINE_TYPE = 'procedure') 
For XML PATH ('Object') , TYPE, ROOT('Objects') 

희망이 도움이 될 것입니다.

관련 문제