2014-06-04 1 views
1

몇 차례 재시작 한 후 SQL Server에서 pks 및 fks를 포함하여 테이블의 모든 세부 정보를 얻기 위해 쿼리가 필요하다는 것을 알았습니다. 누구나 sp 또는 쉬운 방법을 알고 있습니까?쿼리를 사용하여 SQL Server에서 테이블 세부 정보를 얻는 방법? 테이블 세부 사항

아래 쿼리를 수행했지만이 정보는 일부 저장 프로 시저 또는 유사하게 있어야한다고 생각합니다.

select 
    sys.tables.name TableName, 
    sys.tables.object_id TableId, 
    sys.columns.name ColumnName, 
    sys.types.name TypeName, 
    coalesce(
    (
     select top 1 
     sys.indexes.is_unique 
     from 
     sys.index_columns 
     inner join sys.indexes on (sys.indexes.index_id = sys.index_columns.index_id) 
     where 
     sys.columns.object_id = sys.index_columns.object_id 
     and sys.columns.column_id = sys.index_columns.column_id 
     and sys.indexes.is_unique = 1 
    ), 0 
) IsUnique, 
    coalesce(
    (
     select top 1 
     sys.indexes.is_primary_key 
     from 
     sys.index_columns 
     inner join sys.indexes on (sys.indexes.index_id = sys.index_columns.index_id) 
     where 
     sys.columns.object_id = sys.index_columns.object_id 
     and sys.columns.column_id = sys.index_columns.column_id 
     and sys.indexes.is_primary_key = 1 
    ), 0 
) IsPrimaryKey, 
    coalesce(
    (
     select top 1 
     1 
     from 
     sys.foreign_key_columns 
     inner join sys.foreign_keys on (sys.foreign_key_columns.constraint_object_id = sys.foreign_keys.object_id) 
     where 
     sys.foreign_key_columns.parent_object_id = sys.tables.object_id and parent_column_id=sys.columns.column_id 
    ), 0 
) IsForeignKey, 
    sys.columns.max_length MaxLength, 
    sys.columns.precision Precision, 
    sys.columns.scale Scale, 
    sys.columns.is_nullable IsNull, 
    sys.columns.is_identity IsIdentity 
from 
    sys.tables 
    inner join sys.columns on (sys.tables.object_id = sys.columns.object_id) 
    inner join sys.types on (sys.columns.system_type_id = sys.types.system_type_id) 

답변

1

나는 SP_HELP에 대해 이야기하고 있다고 생각합니다. 예 :

exec sp_help 'TABLE_NAME' 
+0

그러나이 열은 FK 또는 PK 인 열을 반환하지 않았습니다. 그 때문에 나는 그 쿼리 상단을했다. –

+0

@FilipeCotrimMelo 실행 해 보셨습니까? 반환하는 테이블 중 하나가 제약 조건 (constraint_type, constraint_name 등)입니다. –

+0

내 실수로 마지막 테이블을 보지 못했습니다. 감사! 긍정적 인 답변을 원하지만 충분한 명성이 없습니다. –

0

information_schema를 사용해보십시오. 당신은 같은 쿼리를 프레임 수 :

Select * from information_schema.columns where table_name = 'City' 

따라서, 당신은 또한 같은 sp_help는 사용할 수있다 :

exec sp_help 'table_name' 

사용하는 적 필요에 맞는!

관련 문제