2011-10-24 6 views
0

레거시 응용 프로그램 (php + mysql)에서 재 작성된 버전 (SQL Server 2008 및 mvc3)으로 데이터를 가져옵니다. 현재 db 동기화/변환 패키지를 작성하는 중입니다.identity_insert on/off 후 SQL Server 무결성 검사

어떤 이유에서든 mysql 데이터에는 기본 키가 있지만 외래 키는 없으며 외부 키가 없어도 관계형 데이터이므로 변환 패키지에서 IDENTITY_INSERT ON/OFF를 사용하고 있습니다. 원본 데이터에 데이터 무결성을 적용 할 방법이 없기 때문에 삽입을 수행하고 IDENTITY_INSERT를 OFF로 설정 한 후에 무결성 검사를 수행하고 싶습니다.

해당 작업을 스크립팅하는 좋은 방법이 있습니까? 가급적 전체 DB가 아닌 테이블 레벨에 있습니까?

감사합니다.

+0

스테이징 테이블에 데이터를로드 할 수 있습니다. ID 필드가있는 "라이브"테이블로 이동하기 전에 데이터를 점검하고 정리하십시오. – Tony

+0

감사합니다. Tony. 그것은 좋은 생각입니다. 나는 X 번호의 클라이언트에 배포해야하기 때문에 이것을 설치하는 사람이라면 누구나 복잡하게하고 싶지 않습니다. 무결성 검사를 수행하고 발견 된 불일치를보고하면됩니다. 무결성 검사를 실행하는 방법을 알아야합니다. –

답변

1

개인적으로 새로운 스키마로 가져 오기 전에 어떤 데이터가 무결성이 없는지 결정할 것입니다. 각 자식 테이블 (또는 자식 테이블로 설계된 shoul)에 대한 간단한 WHERE NOT Exists 쿼리가이를 수행합니다. 부모 레코드에 연결할 수없는 데이터는 가져 오지 않습니다. 그러나 예외 테이블을 만들고 그 레코드를이 테이블로 옮기고 일부 사용자는 부모 데이터가 무엇인지 알아낼 수 있는지 확인해야합니다.

+0

건설적인 답변 주셔서 감사합니다. 나는 그것을 고려해 보았고, 예상되는 불일치가 많으면이 접근법이 유효 할 것이다. 개발 버전의 응용 프로그램 및 테스트 데이터 세트로 작업하면 실제로 어떤 관계 문제도 발견되지 않았습니다. 이 무결성 검사는 안전 장치 일뿐입니다. 완벽하게 솔직하게 말하면 (나에게 게으르다 고 말할 수 있습니다.) 오류 동안 테이블을 완전히 새로 추가하고 마이그레이션 중에 관계를 확인하는 메커니즘을 추가하여 작업을 더욱 복잡하게 만들고 싶지는 않습니다. 나는 확실히 그것을 명심 할 것이다. –