重命名系统版本控制表 Visual Studio SQL 项目中的列



我希望让Visual Studio的SQL Schema Compare生成增量SQL来更新生产数据库,包括对启用了系统版本控制的表(临时表(进行列重命名。

在Visual Studio SQL Project中使用重构确实会在重构日志文件中创建一个条目,并为该重命名的字段生成正确的sp_rename SQL。 但是,关联的历史记录表不会重命名字段 - 它会删除和添加,一旦表中有实际数据,这将无法正常工作。此外,它还使表格彼此不同步。

也许我可以修改重构日志 XML 以指示它是一个附加了历史记录表的字段? 下面的XML显示元素类型是"SqlSimpleColumn"。 还有其他我可以探索的选择吗?

系统:Visual Studio Community 2017SQL Server: Azure SQL Database V12

  <Operation Name="Rename Refactor" Key="48b6ef58-988b-48bf-9606-4048b0c51bf2" ChangeDateTime="04/03/2017 21:19:32">
    <Property Name="ElementName" Value="[dbo].[xyz2].[newafterreset]" />
    <Property Name="ElementType" Value="SqlSimpleColumn" />
    <Property Name="ParentElementName" Value="[dbo].[xyz2]" />
    <Property Name="ParentElementType" Value="SqlTable" />
    <Property Name="NewName" Value="[updateafterreset]" />
  </Operation>

在系统版本控制的历史记录表上手动使用 sp_rename 会导致以下错误:

Msg 13759, Level 16, State 1, Procedure sp_rename, Line 316
Renaming a column failed on history table '<database name>.dbo.<table name>History' because it is not a supported operation on system-versioned tables.
Consider setting SYSTEM_VERSIONING to OFF and trying again.

你能按照它的建议去做吗?

是的,您可以在对表进行更改之前关闭系统版本控制。更改表 [DBO]。[TABLE_NAME]设置 ( SYSTEM_VERSIONING = 关闭 (去

这将允许您对表进行更改。注意:请注意 - 当您执行sp_rename重命名列时,在系统版本控制(临时(表上,它会破坏该实体的版本历史记录

相关内容

  • 没有找到相关文章

最新更新