我正在将Visual Studio 15.8.5与Sql Server Data Tools 15.1一起使用。
我创建了一个SQL Server数据库项目,并导入了已经存在的数据库的架构。我对数据库的一些表做了一些小的更改,并将更新发布到开发数据库中,没有任何问题。
在项目中添加一些SQL脚本后,所有脚本都带有:
Build Action = None
发布失败,尽管未对项目的任何数据库对象进行任何更改。
这是导致问题发生的自动生成的发布脚本的一部分:
/*
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
表[lut].[KAE]
尚未更改。其中一个脚本正在重新定义其架构,但这应该没有区别,因为这是一个“不生成”脚本。
我在这里可能做错了什么?
编辑:
我已经按照@MadBert的建议进行了模式比较。我最初将实际数据库用作源,将SQL Server Visual Studio项目用作目标。没有发现差异。
然后我切换了源数据库和目标数据库,并再次进行了比较。检测到以下“差异”。
如您所见,这并不是实际的区别,它看起来像是架构比较中的Visual Studio错误。关于如何避免这种行为的任何想法?
答案 0 :(得分:6)
原来,重构日志文件是罪魁祸首。
按照@Ogglas的明智建议,我试图将其发布到一个空数据库。我注意到在发布期间我收到以下消息:
以下操作是从重构日志文件生成的 8e659d92-10bb-4ce9-xxxx-xxxxxxxxx重命名[lut]。[KAE]。[xxxxx]为 $$$$$$$$$警告:更改对象名称的任何部分都可以 破坏脚本和存储过程。
然后我注意到我的SQL Server数据库项目包含一个 .refactorlog 文件
似乎该日志文件是在我更改了有问题的表架构之后生成的。该表的模式后来恢复为原始状态,但日志文件仍然保留。
我删除了此日志文件,发布之后终于成功了!
答案 1 :(得分:3)