发布数据库项目失败,因为部署脚本尝试删除并重新创建未修改的表

Gio*_*sos 6 sql-server visual-studio sql-server-data-tools

我正在使用Visual Studio 15.8.5与Sql Server数据工具15.1.

我创建了一个SQL Server数据库项目并导入了现有数据库的模式.我对数据库的几个表进行了一些小的更改,并将更新发布到开发数据库,​​没有任何问题.

在向项目添加一些SQL脚本之后,所有这些脚本都包含:

Build Action = None
Run Code Online (Sandbox Code Playgroud)

尽管没有对项目的任何数据库对象进行任何更改,但发布失败.

这是导致问题的自动生成的发布脚本的一部分:

/*
The table [lut].[KAE] is being dropped and re-created since all 
non-computed columns within the table have been redefined.
*/

IF EXISTS (select top 1 1 from [lut].[KAE])
    RAISERROR (N'Rows were detected. The schema update is terminating 
because data loss might occur.', 16, 127) WITH NOWAIT

GO
Run Code Online (Sandbox Code Playgroud)

但是,表格[lut].[KAE]没有改变.其中一个脚本正在重新定义其架构,但这应该没有区别,因为这是一个'No Build'脚本.

我在这里做错了什么?

编辑:

@MadBert建议我做了架构比较.我最初使用我的实际数据库作为和我的sql server visual studio项目作为目标.没有发现任何差异.

然后我切换源和目标数据库并再次进行比较.检测到以下"差异".

在此输入图像描述

正如您所看到的,这不是实际差异,它看起来像是架构比较中的Visual Studio错误.关于如何规避这种行为的任何想法?

Gio*_*sos 6

事实证明,重构日志文件是罪魁祸首.

我试图发布到一个空数据库,正如@Ogglas明智地建议的那样.我注意到在发布期间我收到以下消息:

从重构日志文件8e659d92-10bb-4ce9-xxxx-xxxxxxxxx重命名[lut].[KAE].[xxxxx]到$$$$$$$$$生成以下操作警告:更改对象名称的任何部分可以破坏脚本和存储过程.

然后我注意到我的SQL Server数据库项目包含一个.refactorlog文件

在此输入图像描述

似乎这个日志文件是在我更改了违规表模式后生成的.该表的模式后来恢复到其原始状态,但日志文件仍然存在.

我删除了这个日志文件,之后发布终于成功了!