Visual studio 2012 触发器正在阻止数据库项目发布

Visual studio 2012 触发器正在阻止数据库项目发布,visual-studio-2012,sql-server-2012-datatools,Visual Studio 2012,Sql Server 2012 Datatools,我有一个Visual Studio 2012数据库项目,其中包含我的数据库架构。在部署后脚本中,我自动创建了许多触发器,负责记录表数据的更改 不幸的是,当我随后修改表并重新发布(在本例中,添加标识规范)时,我现在遇到了以下错误: 此部署在执行过程中可能会遇到错误,因为对[dbo].[BenefitInfoVendor]的更改被目标数据库中[dbo].[tr_BenefitInfoVendor_Audit]的依赖项阻止 然后发布拒绝继续创建发布预览。。。步骤 如果手动删除触发器,则发布成功。但我不

我有一个Visual Studio 2012数据库项目,其中包含我的数据库架构。在部署后脚本中,我自动创建了许多触发器,负责记录表数据的更改

不幸的是,当我随后修改表并重新发布(在本例中,添加标识规范)时,我现在遇到了以下错误:

此部署在执行过程中可能会遇到错误,因为对[dbo].[BenefitInfoVendor]的更改被目标数据库中[dbo].[tr_BenefitInfoVendor_Audit]的依赖项阻止

然后发布拒绝继续创建发布预览。。。步骤

如果手动删除触发器,则发布成功。但我不想每次从这里开始更新模式(或与其他开发人员沟通!)时都要记住手动执行此操作

我已尝试删除预部署脚本中的所有触发器,但这还不足以“很快”停止此错误


有没有办法在Visual Studio中抑制此错误,或者让它知道我将自己处理触发器?

我也遇到了同样的问题。我尝试了各种“忽略”属性的组合,至少远程连接到触发器,但没有成功:(

接下来,我通过取消选中“验证部署”属性(列表中的最后一个属性由“发布数据库”窗口中的“高级…”按钮访问)绕过了它

这对我来说确实有效,但可能会导致实际问题在实际部署之前无法被发现。因为我已经习惯于手动检查生成的脚本以检查潜在问题(例如没有DF约束的新非空列),所以我不必更改我的例程


最后,我使用了“将验证错误视为警告”属性。效果是一样的,但实际上您将在发布预览中获得潜在问题的列表。在后续项目中,我找到了一个解决方案,似乎可以解决此问题。我向每个表脚本添加一个存根,以创建一个具有相同名称的最小触发器它是生成的触发器,但不执行任何操作

这是一个少量的额外输入,并允许我保持我的触发逻辑的因素

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