스키마 비교 문제 해결
두 데이터베이스 스키마를 비교하는 경우 이 항목에 설명된 문제가 발생할 수 있습니다.
종속성 및 업데이트 스크립트
업데이트 스크립트에서 개체를 올바른 순서대로 생성하기 위해 스키마 비교는 개체 종속성을 검사합니다. 예를 들어 뷰가 테이블에 종속된 경우 뷰보다 먼저 테이블을 만들어야 합니다. 두 번째 개체에 종속된 개체에서 스키마 한정 이름을 사용하지 않는 경우 종속성이 확인되지 않거나 업데이트 또는 생성 스크립트의 문 순서가 잘못될 수도 있습니다. 이러한 차이로 인해 소스와 일치하도록 대상을 업데이트하거나 변경 내용을 데이터베이스로 배포할 때 오류가 발생할 수 있습니다. 이 문제는 데이터베이스 빌드 스크립트에도 적용됩니다.
참고
이 문제를 해결하려면 종속 관계에 있는 개체 이름에서 스키마를 한정해야 합니다. 다음 예제에서 단순히 KeysTable 대신 [dbo].[KeysTable]을 참조하도록 문의 끝 부분을 변경하면 종속성이 제대로 확인됩니다.
CREATE VIEW [NewUser].[ViewReferencingScalarFunction] AS SELECT Column2, dbo.SimpleMultiplyParamByTwo(PK_Column) AS [Function] FROM KeysTable
테이블 및 인덱스 옵션
스키마 비교에서는 sp_tableoption 또는 sp_indexoption을 사용하여 설정한 옵션을 비교 또는 스크립팅하지 않습니다. 이 문제를 해결할 수 있는 방법은 없습니다.
대규모 데이터베이스 비교 시 시간 초과
대규모 데이터베이스의 스키마를 비교할 때 시간 초과 오류가 발생하는 경우 시간 제한 값을 늘려야 합니다. 이 옵션은 사용자 인터페이스를 통해 노출되지 않습니다. HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\VSTSDB\Database 아래의 레지스트리에 초 단위로 지정되어 저장된 QueryTimeoutSeconds 값을 수정해야 합니다. 시간 제한은 기본적으로 60초입니다.
파일 및 파일 그룹 비교
대상 데이터베이스의 파일 그룹이 읽기 전용이면 해당 속성은 데이터베이스와 데이터베이스 프로젝트 간의 스키마를 비교할 때 항상 차이점으로 나타납니다. 또한 기본 파일 그룹은 스키마를 비교할 때는 무시됩니다.
또한 동일한 서버의 두 데이터베이스를 동기화하려고 하면 보조 파일 및 파일 스트림을 동기화하려고 할 때 문제가 발생할 수 있습니다. 동기화할 때 파일 그룹 및 파일을 제외하면 이 문제를 해결할 수 있습니다.