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错误.关于如何规避这种行为的任何想法?
事实证明,重构日志文件是罪魁祸首.
我试图发布到一个空数据库,正如@Ogglas明智地建议的那样.我注意到在发布期间我收到以下消息:
从重构日志文件8e659d92-10bb-4ce9-xxxx-xxxxxxxxx重命名[lut].[KAE].[xxxxx]到$$$$$$$$$生成以下操作警告:更改对象名称的任何部分可以破坏脚本和存储过程.
然后我注意到我的SQL Server数据库项目包含一个.refactorlog文件
似乎这个日志文件是在我更改了违规表模式后生成的.该表的模式后来恢复到其原始状态,但日志文件仍然存在.
我删除了这个日志文件,之后发布终于成功了!