2

많은 뷰가 CDC 테이블에 종속되어 있기 때문에 Visual Studio 2012/2010에서 데이터베이스 프로젝트를 만들려고합니다. CDC (Change Data Capture) 테이블이 필요합니다. cdc 스키마/테이블을 가져올 방법을 찾지 못했습니다. (많은 블로그에서 cdc를 가져 오는 것이 지원되지 않습니다.) 제안 사항을 제안하십시오Visual Studio에서 CDC 테이블 가져 오기 2012/2010 데이터베이스 프로젝트

+0

해결 방법은 배포 후 스크립트에서 삭제/다시 작성하고 거기에 사용 권한을 적용하는 것입니다. 나는보기가 존재하지 않거나 아직 존재하지 않는 객체에 의존 할 때 전에 그렇게해야했습니다. 여전히 버전이 있지만 프로젝트의 일부는 아닙니다. –

답변

0

일반적으로 CDC 테이블을 원하지 않습니다. sys.sp_cdc_enable_table
데이터베이스 프로젝트가 테이블을 정상적으로 만들도록 허용하면 CDC 테이블은 실제로 끝나지 만 변경 데이터 캡처는 실제로는 존재하지 않게됩니다 사용 가능. 분명히

할 수 있습니다 통화가 지금까지의 내가 어느 장소에 이상적입니다 말할 수있는 사전 또는 사후 스크립트 중 하나에 sys.sp_cdc_enable_table 만하는 스크립트.

sys.sp_cdc_enable_table 호출을 Pre 스크립트에 넣으면 변경 사항이 원래 테이블이 모두 존재하지는 않습니다 (해당 테이블 중 아무 것도 존재하지 않을 것임). 또는 기본 테이블의 일부로 모양이 변경됩니다. Pre가 실행 된 후에 발생합니다.

게시 스크립트에 sys.sp_cdc_enable_table 호출을 넣으면 DB 프로젝트에서 오류나 경고없이 주 데이터베이스 프로젝트 배포의 일부로 배포 된 기존 CDC 테이블에 의존하는 뷰를 가질 수 없습니다. .

CDC 테이블의 존재에 의존하는 뷰, 함수 또는 저장된 procs가 너무 많지는 않겠지 만 너무 늦은 것처럼 들립니다.
사이드 참고 : 일반적으로 당신이 cdc.fn_cdc_get_all_changes_cdc.fn_cdc_get_net_changes_ 기능을 사용하기보다는 직접 CDC 테이블을 참조해야 말하기, 그냥 프로젝트에서 존재하지 않는 이러한 기능에 한 단계를 따라 문제를 이동하는, 그러나 Querying Change Data Capture data
를 참조하십시오.
불행하게도, (당신 스크립트 통화가

을 sys.sp_cdc_enable_table하기 위해 동일한 시점에서 그들을 스크립팅 솔직히 다른 사람이 따라 올 것이다 바라고 있어요 않고 그 여분의 전망을 할 수있는 좋은 방법이있을 것 같지 않습니다

0

구현 단계에서 빌드를 위해 TFS/VS를 사용하는 DB 프로젝트에서 최근에 동일한 문제가 발생했습니다.

Scott이 정확하게 말했듯이 프로젝트/솔루션 내에 cdc 스키마 나 개체를 구현하는 것은 좋지 않습니다. 실제로 경험하고 싶지 않은 불행한 결과가 있습니다!

TFS/VS 프로젝트의 경우 PreDeployment 스크립트 전략을 구현해야 PreDeploy 프로세스 중에 CDC를 사용하지 않도록 설정 한 다음 PostDepolyment 프로세스 중에 인스턴스를 다시 만들 수 있습니다.

이렇게하면 올바른 CDC 인스턴스가 균일하게 만들어집니다.

종속 뷰를 고려할 때 전략은 어렵지 않습니다. 프로젝트에서 평소와 같이보기를 자리 표시 자로 만듭니다 (예 : 간단한 CREATE dbo.vMyView AS SELECT 1 FROM SomeTable). PostDeployment 스크립트에서 후에을 실행하는 추가 스크립트를 CDC 인스턴스가 생성 된 해당 뷰에 대한 ALTER 문과 함께 추가합니다 (예 : ALTER VIEW dbo.vMyView SELECT Col1 FROM cdc.MyCDC_CT). 한 번 생성 된 뷰는 기본 테이블이없는 경우에도 존재할 수 있음을 기억하십시오.