Visual studio 2012 触发器正在阻止数据库项目发布
我有一个Visual Studio 2012数据库项目,其中包含我的数据库架构。在部署后脚本中,我自动创建了许多触发器,负责记录表数据的更改 不幸的是,当我随后修改表并重新发布(在本例中,添加标识规范)时,我现在遇到了以下错误: 此部署在执行过程中可能会遇到错误,因为对[dbo].[BenefitInfoVendor]的更改被目标数据库中[dbo].[tr_BenefitInfoVendor_Audit]的依赖项阻止 然后发布拒绝继续创建发布预览。。。步骤 如果手动删除触发器,则发布成功。但我不想每次从这里开始更新模式(或与其他开发人员沟通!)时都要记住手动执行此操作 我已尝试删除预部署脚本中的所有触发器,但这还不足以“很快”停止此错误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中抑制此错误,或者让它知道我将自己处理触发器?我也遇到了同样的问题。我尝试了各种“忽略”属性的组合,至少远程连接到触发器,但没有成功:( 接下来,我通过取消选中“验证部署”属性(列表中的最后一个属性由“发布数据库”窗口中的“高级…”按钮访问)绕过了它 这对我来说确实有效,但可能会导致实际问题在实际部署之前无法被发现。因为我已经习惯于手动检查生成的脚本以检查潜在问题(例如没有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