0
아래 쿼리는 두 데이터베이스 간의 기본 키를 비교합니다. 하나의 데이터베이스에서 모든 기본 키 제약 조건을 식별하지만 다른 하나는 식별하지 않습니다. 쿼리를 실행하면 제약 조건 이름 중 일부가 시스템 생성 (즉, PK__afm_scmpref__2D27B809
또는 PK__projfund__E34271EE251CF998
)으로 표시됩니다. 이러한 시스템 생성 때문에 데이터베이스간에 비교할 수 없습니다. 이 문제를 해결할 방법이 있습니까?데이터베이스 간의 기본 키 제약 비교
많은 덕분에, 여기
내 코드입니다 :SELECT src.table_name AS src_table,
src.constraint_name AS scr_constraint_name,
src.column_name AS src_column_name,
src.ordinal_position AS src_ordinal_position,
tgt.table_name AS tgt_table_name ,
tgt.constraint_name AS tgt_constraint_name,
tgt.column_name AS tgt_column_name,
tgt.ordinal_position AS tgt_ordinal_position
from db_comp_src_primary_keys src
FULL OUTER JOIN
db_comp_tgt_primary_keys tgt ON
src.table_name = tgt.table_name
AND src.constraint_name = tgt.constraint_name
WHERE ( (src.constraint_name IS NULL AND tgt.constraint_name IS NOT NULL)
OR (src.constraint_name IS NOT NULL AND tgt.constraint_name IS NULL))
AND ( ( tgt.table_name IS NULL
AND src.table_name IS NOT NULL
AND src.constraint_name IS NOT NULL
AND src.table_name IN
(SELECT table_name
FROM [HQ-193-STOCK-DBO].INFORMATION_SCHEMA.tables))
OR ( src.table_name IS NULL
AND tgt.table_name IS NOT NULL
AND tgt.constraint_name IS NOT NULL
AND tgt.table_name IN
(SELECT table_name
FROM [HQ-211-STOCK-DBO].INFORMATION_SCHEMA.tables)))
PK 이름 자체가 아닌 PK의 열 이름 집합을 비교해야합니다. – RBarryYoung
'db_comp_src_primary_keys' 및'db_comp_tgt_primary_keys' 테이블/뷰는 무엇입니까? 정의를 제공 할 수 있습니까? – RBarryYoung
두 데이터베이스가 기본 키가 아닌 다른 스키마를 가지고 있습니까? 테이블의 이름이 같은가요? 그렇지 않으면 무엇을 성취하기를 희망합니까? – Jodrell