BULK INSERT가 진행되는 동안 SSDT 스키마 비교가 작동하지 않습니다


11

SSIS 및 SSDT와 함께 TFS / 소스 제어를 사용하는 대규모 ETL 및 DW 프로젝트에서 일하고 있습니다.

오늘 SSIS 패키지가 데이터베이스 테이블에 BULK INSERT를 수행하는 동안 해당 데이터베이스에 대해 SSDT 스키마 비교를 수행 할 수 없음을 알게되었습니다. 일부 패키지는 완료하는 데 시간이 오래 걸리기 때문에 불행한 일입니다. Schema Compare 기능을 사용하여 데이터베이스의 버전 제어를 위해 SSDT 프로젝트에 변경 사항을 저장하기 위해 데이터베이스 구조의 변경 사항을 감지하려고합니다.

이것에 대해 조금 더 살펴보면 SSDT의 스키마 비교 함수 OBJECTPROPERTY()가 데이터베이스의 테이블에서 시스템 함수 를 호출하는 SQL 스크립트를 실행한다는 것을 알았습니다 . 특히 제 경우에는 현재 대량 삽입중인 테이블을 참조 할 OBJECTPROPERTY(<object_id>, N'IsEncrypted')때 호출 이 차단 된 것 같습니다 <object_id>.

Visual Studio에서 SSDT 스키마 비교는 잠시 후에 시간이 초과되어 차이가 감지되지 않았다고 주장합니다.

SSDT에이 문제에 대한 해결 방법이 있습니까, 아니면 MS Connect 버그 보고서를 제출해야합니까?

또는 BULK INSERT는 SSIS 패키지에서 발생 OBJECTPROPERTY하므로 테이블에 대한 호출을 호출 하지 않고 삽입 할 수있는 방법이 있습니까? 편집 : SSIS OLE DB 대상에서는 "Lock Table"에서 확인 표시를 제거 할 수 있습니다. 이렇게하면 기능이 작동하지만 일부 상황에서는 성능이 저하 될 수 있습니다. SSDT Schema Compare가 일부 객체가 잠겨 있어도 작업을 수행 할 수있게 해주는 솔루션에 훨씬 관심이 있습니다.


대량 가져 오기에 대한 잠금 동작 제어를 살펴보십시오 . '대량로드시 테이블 잠금'이 사용 가능할 수 있습니다. 또한 BULK INSERT가 TABLOCK을
stuartd

테이블 잠금을 수행하는 경우 어쨌든 테이블을 비활성화하면 ( technet.microsoft.com/en-us/library/ms177445.aspx ) 로드를 더 빨리 찾을 수 있습니다 . 변화가 없다고 말하는 것보다는 실패가 거의 없습니다
Ed Elliott

답장, 스튜어트 및 에드 엘리엇에게 감사합니다. 실제로 성능상의 이유로 테이블을 잠그고 싶습니다. 내 생각에 SSDT는 데이터베이스를 비교하고 데이터베이스의 객체에 변경 사항을 적용하지 않기 때문에이를 처리 할 수 ​​있어야합니다. 이 문제를 해결하기 위해 연결 게시물을 작성하겠습니다.
Dan

3
내부는 나의 장점은 아니지만 이해하지만 테이블에 자물쇠가 있습니다. 잠금이 수행되는 것은 대량 삽입이 스키마 유효성을 검사하는 데 필요한 잠금과 호환되지 않는 것입니다. 관련 읽기 BOL 스키마 잠금
billinkc

스키마 비교가로드 작업과 동시에 실행되어야하는 이유를 더 잘 설명해 주시겠습니까? 아마도 대안은 데이터베이스의 참조 모델을 갖는 것입니다. 데이터가없고 스키마 만 있습니다. 이에 대한 비교를 실행 한 다음 참조 모델을 먼저 업데이트하지 않고 이러한 대량 작업이 수행되는 실제 데이터베이스를 아무도 수정하지 않도록하십시오.
billinkc

답변:


19

OBJECTPROPERTY호출에는 스키마 안정성 (Sch-S) 잠금이 필요하며, 이는 스키마 수정 (Sch-M) 잠금과 만 호환되지 않습니다 .

BULK INSERT어떤 상황에서 SCH-M 잠금을 취할 것입니다. 이 내용은 온라인 설명서에서 대량 가져 오기 최적화 지침의 "대량 가져 오기 중 테이블 잠금 및 로깅"섹션에 나와 있습니다 .

대량 가져 오기 잠금

대상 테이블이 클러스터 된 경우 추적 플래그 610 사용 이 도움 이 될 수 있습니다 . 이 게시물의 전체 시리즈와 데이터로드 성능 가이드를 읽고이 경로를 사용하기로 결정한 경우 철저히 테스트하십시오.

SSDT가 IsEncrypted테이블 의 속성을 확인하는 이유를 모르겠습니다 . 나는 그것이 의미가있는 시나리오를 상상할 수는 없지만 SSDT 사람들에게는 질문입니다.


3
이것은 매우 포괄적이고 만족스러운 답변이었습니다. 대단히 감사합니다.
Dan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.