如何解决目标数据库中没有列,但收到“架构更新正在终止,因为可能会发生数据丢失”
我正在使用一些测试数据对由生产模式构成的数据库进行测试。
当我从 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
列名称已经很久没有出现在该表中了。
解决方法
所以事实证明重构日志中有一些非常古老的东西。我要求发布步骤生成脚本而不是立即发布并搜索 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>
因为我们不使用那些重构日志功能,我只是删除了整个重构日志,一切正常。我想你也可以删除错误的重命名。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。