문제

"Copy SQL Server Objects"작업으로 오류가 발생하는 DTS 패키지가 있습니다. 이 작업은 하나의 SQL Server 2000 SP4 서버에서 다른 버전 (동일한 버전)으로 테이블과 데이터를 복사하고 다음과 같은 오류를 제공합니다.

테이블에 하나가있는 것으로 표시되지만 'dbo.mytableName'에 대한 확인 제약 조건을 찾을 수 없습니다.

소스 테이블에는 문제를 일으키는 것으로 보이는 하나의 검사 제약 조건이 정의되어 있습니다. DTS 패키지를 실행 한 후에는 제대로 작동하는 것으로 보입니다. 테이블, 모든 제약 조건과 데이터가 대상 서버에서 생성됩니까? 그러나 위의 오류가 발생하여 후속 단계가 실행되지 않습니다.

이 오류가 왜 제기되는지 아십니까?

도움이 되었습니까?

해결책

이는 SYS 테이블의 메타 데이터가 실제 스키마와 동기화되지 않았 음을 나타냅니다. 보다 일반화 된 부패의 다른 징후가 보이지 않는 경우, 테이블을 다른 테이블에 복사하여 테이블을 재건하고 (OldTable에서 NewTable에 * 선택) 기존 테이블을 떨어 뜨린 다음 새 테이블을 바꾸고 제약 조건을 대체합니다. 돕다. 이것은 테이블 끝에없는 열을 삽입 할 때 2000 년 엔터프라이즈 관리자가 일을하는 방식과 유사하므로 테이블 중간에 새 열을 삽입 한 다음 제거하면 동일한 것을 달성합니다. '쿼리를 수동으로 작성하고 싶다.

이런 종류의 오류의 다른 발생을 보면 데이터베이스 상태 전체에 대해 다소 걱정할 것입니다. (여기서 당신이 이미 checkDB 명령을 작성했고 오류가 지속되고 있다고 가정합니다 ...)

다른 팁

이 오류는 기존 테이블에 새 열 (체크 제약 조건이있는)이 추가되었을 때 시작되었습니다. 조사하려면 다음과 같이

  • 테이블을 다른 대상 SQL Server에 복사하고 동일한 오류가 발생했습니다.
  • 정확히 동일한 구조이지만 다른 이름이 다른 새 테이블을 만들었고 오류없이 복사했습니다.
  • 문제 테이블의 체크 제약 조건을 삭제하고 재창조했지만 여전히 동일한 오류가 발생합니다.
  • all_errormsgs가있는 DBCC CheckTable ( 'MyTablename')은 오류가 없습니다.
  • 소스 및 대상 데이터베이스의 DBCC CheckDB는 오류가 없습니다.

흥미롭게도 DTS 패키지가 다음과 같이 나타납니다.

  • 테이블을 복사하십시오.
  • 데이터를 복사하십시오.
  • 제약 조건을 만듭니다

검사 제한 제작 시간은 테이블 생성 시간 후 7 분이기 때문에 데이터를 이동 한 후 체크 제약 조건을 만듭니다. 복사 할 때 데이터를 확인할 필요가 없으므로 성능을 향상시킬 수 있으므로 의미가 있습니다.

Godeke가 제안한 것처럼, 동일한 열이있는 새 테이블이 작동함에 따라 시스템 테이블에서 무언가가 부패했다고 생각합니다. DBCC 진술이 오류가 발생하지 않더라도?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top