首页 > 解决方案 > 数据库项目在创建索引/触发器之前不会删除它们

问题描述

我有无法通过 db 项目控制的表,但我需要对其进行索引和触发器。这意味着我不在 db proj -> add -> table 上使用鼠标右键。我在有下一个代码的地方使用简单的脚本(db proj 上的鼠标右键-> 添加-> 脚本)

    GO 
    CREATE NONCLUSTERED INDEX [IX_om_event_venue_id] ON [dbo].[event]([venue_id] ASC)

当我生成发布脚本时,它总是将上面的代码插入到发布脚本中。但它不应该在存在相同索引的情况下。结果我得到一个错误:

(1077,1):SQL72014:.Net SqlClient 数据提供者:消息 1913,级别 16,状态 1,第 1 行操作失败,因为表 'dbo.event' 上已存在名称为 'IX_om_event_venue_id' 的索引或统计信息。

我应该怎么做才能让脚本生成器将上面的代码与现有的数据库模式进行比较?

附言

我在文件中有几个这样的表达式,例如:

    GO
CREATE NONCLUSTERED INDEX [IX_om_ticket_voided_invoice_ticket_group_id] ON [dbo].[ticket_voided_invoice]([ticket_group_id] ASC)

但是它们会按应有的方式进行处理 - 如果数据库已经有它们,它们不会添加到发布脚本中

标签: sql-servertsqlpublishdatabase-project

解决方案


推荐阅读