외래 키가 없으므로 참조 무결성이 부족한 ERP 데이터베이스가 있습니다.SQL Server 2000에서 고아 레코드 찾기
데이터베이스의 주요 테이블의 대부분이 고아 레코드임을 확인하는 스크립트를 작성하고 있습니다.
예를 들어,이 경우 영업 테이블을 사용하고 있습니다.
SLCDPM - Customer Master Table
SOMAST - Sales Order Master
SOITEM - Sales Order Items
SORELS - Sales Order Releases
기본적으로, 내가 위의 모든 테이블에 표시되지 않는 SORELS에 기록이 있는지 확인해야이 (그리고 다른 테이블의 전체 무리)합니다. 그런 다음 SOITEM을 가져 와서 위에 체크하십시오. 기타
필자는 스크립트를 작성하기 시작했으나 줄의 수는 다소 어리 석다. 다음은이 4 개의 테이블로 시작한 부분입니다. 나는 중지
select 'Sales Order Master',* from somast where fcustno not in (select fcustno from slcdpm where ftype <> 'P')
SELECT 'Sales Order Item',* FROM soitem WHERE fsono NOT IN (SELECT fsono FROM somast)
select 'Sales Order Release',* from sorels where (fsono+finumber) not in (select (fsono+finumber) from SOITEM)
이유는 그냥 SORELS (아래 표)뿐만 아니라 모든 테이블 그 전에, 그 전에 테이블을 검사 것을 깨달았다이었다.
누구나이 스크립트를 사용하여 더 자동화 된 방식으로 만들 수 있습니다.