몇 차례 재시작 한 후 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)
그러나이 열은 FK 또는 PK 인 열을 반환하지 않았습니다. 그 때문에 나는 그 쿼리 상단을했다. –
@FilipeCotrimMelo 실행 해 보셨습니까? 반환하는 테이블 중 하나가 제약 조건 (constraint_type, constraint_name 등)입니다. –
내 실수로 마지막 테이블을 보지 못했습니다. 감사! 긍정적 인 답변을 원하지만 충분한 명성이 없습니다. –