VS 2013在T-SQL项目中的奇怪行为

时间:2015-05-25 11:11:15

标签: sql-server visual-studio-2013 schema-compare

尝试从db解决方案构建项目时遇到了奇怪的错误。

EG。我有一张桌子

CREATE TABLE [dbo].[partner2_log_status] (
    [rec_id]     INT             IDENTITY (1, 1) NOT NULL,
    [log_status] INT             NULL,
    [log_msg]    NVARCHAR (4000) NULL,
    [log_count]  BIGINT          CONSTRAINT [DF_partner2_log_status_log_count] DEFAULT ((0)) NOT NULL,
    [sys_dt]     DATETIME        CONSTRAINT [DF_partner2_log_status_sys_dt] DEFAULT (getdate()) NOT NULL,
    CONSTRAINT [PK_partner2_log_status] PRIMARY KEY CLUSTERED ([rec_id] ASC)
);

这就是我得到的:

SQL71508 :模型已经有一个名为dbo.partner2_log_status的元素。
SQL71501 :默认约束:[dbo]。[DF_partner2_log_status_log_count]有一个未解析的对列[dbo]的引用。[partner2_log_status]。[log_count]。

但是项目中只有一个具有此名称的表。

等等...... 10个项目中约1,7k个错误。

当我在Visual Studio中查看/构建时,整个解决方案都会发生这种情况。 SSMS接受代码并成功执行,因此它似乎只是VS的问题。

发生了什么,我该如何解决?

2 个答案:

答案 0 :(得分:0)

关于第一个错误,

  

SQL71508:该模型已有一个名称相同的元素dbo.partner2_log_status

表示" dbo.partner2_log_status"在您的项目中至少再次使用过一次。

为了解决这个错误,需要检查所有使用了同名变量的表,并将其删除。它可能在另一个约束内。

答案 1 :(得分:0)

我知道这是一个老问题,但我一直在寻找并寻找一段时间。我的解决方案中有一个数据库项目,我试图用几个脚本添加一个文件夹。突然之间,该项目将无法构建(即使我将这些脚本设置为不构建)。我收到了原始问题中提到的数据库中每个对象的SQL错误。每个表,字段,约束,视图等都已在模型中报告。我删除了我添加的文件夹和脚本,但它仍然没有构建。重新启动VS,重置我的git分支,以及我能想到的任何其他内容。还是一样的错误。

我终于遇到了这篇文章:SQL Database Project: build different scripts depending on build configuration

它提到了dbmdl缓存文件。我在项目目录中删除了该文件,下一个版本就像魅力一样。当没有实际复制定义的对象时,这可能会帮助其他人获得此错误。