2014-07-21 7 views
2

데이터베이스 스키마가 포함 된 Visual Studio 2012 데이터베이스 프로젝트가 있습니다. 배포 후 스크립트에서 테이블의 데이터 변경 내용을 로깅 할 수있는 트리거를 자동으로 만듭니다.트리거가 데이터베이스 프로젝트 게시를 차단합니다.

불행히도, 난 이후에 테이블을 수정하고 (정체성 사양을 추가,이 경우) 게시 다시 때, 지금이 오류 받고 있어요 : (가) 다음 더 이상 진행을 거부 공표

This deployment may encounter errors during execution because changes to [dbo].[BenefitInfoVendor] are blocked by [dbo].[tr_BenefitInfoVendor_Audit]'s dependency in the target database.

을 게시 미리보기 만들기 ... 단계.

수동으로 트리거를 삭제하면 게시가 성공합니다. 하지만 여기에서 스키마를 업데이트 할 때마다 수동으로이 작업을 수행해야한다는 것을 기억하고 싶지 않습니다 (또는 다른 개발자와 통신하십시오!).

사전 배포 스크립트에서 모든 트리거를 삭제하려고 시도했지만이 오류를 막을 수있는 "조기"가 아닙니다.

Visual Studio에서이 오류를 억제하는 방법이 있습니까? 그렇지 않으면 트리거를 직접 처리 할 것임을 알리는 방법이 있습니까?

+0

해결책이 있습니까? 어쨌든 스크립트에 의해 삭제 될 테이블에 연결된 트리거를 사용하여 동일한 문제가 발생하지만 아직 차단하고 있습니다. – Patrick

+0

@ 패트릭 나는하지 않았다. 다른 개발자에게 문제가 발생했을 때 로깅 트리거를 수동으로 삭제하도록 지시했습니다. – AaronSieb

답변

0

후속 프로젝트에서이 문제를 해결할 수있는 해결책을 발견했습니다. 생성 된 트리거와 동일한 이름을 가진 최소 트리거를 생성하지만 아무것도 수행하지 않는 각 테이블 스크립트에 스텁을 추가합니다.

이것은 약간의 추가 타이핑이며 트리거 로직을 그대로 유지할 수있게 해줍니다.

CREATE TABLE [dbo].[AlertingDeviceTypes] 
(
    [AlertingDeviceTypeId] INT NOT NULL PRIMARY KEY IDENTITY, 
    [Name] NVARCHAR(MAX) NOT NULL, 
    --Other fields... 
    [Deleted] BIT NOT NULL DEFAULT 0, 
    [DeletionId] UNIQUEIDENTIFIER NULL 
) 
GO 

CREATE TRIGGER [dbo].[tr_AlertingDeviceTypes_SetDeletionId] ON [dbo].[AlertingDeviceTypes] After UPDATE 
    AS 
    BEGIN 
     --This is a placeholder for the autogenerated trigger. 
     noop: 
    END 
GO 
0

나는 동일한 문제가있었습니다. 적어도 원격으로 트리거에 연결되면서 '무시'속성의 다양한 조합을 시도했지만 성공하지 못했습니다. (

다음은 '배포 확인'속성 (고급 ... 버튼으로 액세스 한 목록의 마지막 속성)의 선택을 취소하여 무시했습니다.

실제 배포 전에 실제 문제가 발생하지 않도록 할 수 있습니다. 이미 수동으로 생성 된 스크립트를 사용하여 잠재적 인 문제 (예 : new DF 제약 조건이없는 null 열이 아닌 경우), 루틴을 변경할 필요가 없습니다.

마지막으로 '확인 오류를 경고로 처리'속성을 사용했습니다. 는 동일하지만 게시 미리보기에서 잠재적 인 문제 목록을 실제로 얻을 수 있습니다.