gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:37:04 25 4
gpt4 key购买 nike

我将 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 项目作为目标。没有发现任何差异。

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

enter image description here

正如您所看到的,这并不是真正的差异,它看起来像是架构比较中的 Visual Studio bug。关于如何规避这种行为有什么想法吗?

最佳答案

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

正如@Ogglas 明智地建议的那样,我尝试发布到一个空数据库。我注意到在发布过程中我收到以下消息:

The following operation was generated from a refactoring log file 8e659d92-10bb-4ce9-xxxx-xxxxxxxxx Rename [lut].[KAE].[xxxxx] to $$$$$$$$$ Caution: Changing any part of an object name could break scripts and stored procedures.

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

enter image description here

这个日志文件似乎是在我更改有问题的表架构后生成的。该表的架构后来恢复到其原始状态,但日志文件仍然存在。

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

关于sql-server - 数据库项目发布失败,因为部署脚本尝试删除并重新创建未修改的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53450150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com