目标数据库中没有列,但正在获取 "The schema update is terminating because data loss might occur"

No column in target database, but getting "The schema update is terminating because data loss might occur"

我在发布 SQL 项目时遇到错误。

我正在使用一些测试数据对由生产模式创建的数据库进行测试。

当我在 Visual Studio 中查看“数据工具操作”选项卡中的错误时,我看到了这个:

/*
The column [dbo].[MyTableName].[UnexpectedColumnName] is being dropped, data loss could occur.
*/
IF EXISTS (select top 1 1 from [dbo].[MyTableName])
    RAISERROR (N'Rows were detected. The schema update is terminating because data loss might occur.', 16, 127) WITH NOWAIT
GO

但是,UnexpectedColumnName 列名称已经很长时间没有出现在 table 中了。

问题是为什么会生成 SQL。

原来重构日志中有一些非常古老的东西。我要求发布步骤生成脚本而不是立即发布并搜索 UnexpectedColumnName:

GO
PRINT N'The following operation was generated from a refactoring log file 69ad6ffa-f53e-4302-a9af-a6f6907e4eec, 5879552a-9f2d-439c-82c8-352bbee08bb2';
PRINT N'Rename [dbo].[MyTableName].[ArbitraryRealColumnName] to UnexpectedColumnName';

GO
EXECUTE sp_rename @objname = N'[dbo].[MyTableName].[ArbitraryRealColumnName]', @newname = N'UnexpectedColumnName', @objtype = N'COLUMN';

然后我查看了重构日志,发现它与 GUID 匹配:

  <Operation Name="Rename Refactor" Key="5879552a-9f2d-439c-82c8-352bbee08bb2" ChangeDateTime="02/13/2020 20:07:08">
    <Property Name="ElementName" Value="[dbo].[MyTableName].[NotSureWhatThisIs]" />
    <Property Name="ElementType" Value="SqlSimpleColumn" />
    <Property Name="ParentElementName" Value="[dbo].[MyTableName]" />
    <Property Name="ParentElementType" Value="SqlTable" />
    <Property Name="NewName" Value="UnexpectedColumnName" />
  </Operation>

因为我们不使用那些重构日志功能,所以我只是删除了整个重构日志,一切正常。我想你也可以删除错误的重命名。