3

我希望 Visual Studio 的 SQL Schema Compare 生成增量 SQL 以更新生产数据库,包括在系统版本控制(临时表)上的表上重命名列。

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

也许我可以修改重构日志 XML 以表明它是一个附加了历史表的字段?下面的 XML 显示 Elementtype 是“SqlSimpleColumn”。我还有其他选择吗?

系统:Visual Studio Community 2017 SQL 服务器:Azure SQL 数据库 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>
4

2 回答 2

0

在系统版本化历史表上手动使用 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.

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

于 2019-01-16T02:36:35.280 回答
0

是的,您可以在更改表格之前关闭系统版本控制。ALTER TABLE [dbo].[TABLE_NAME] SET (SYSTEM_VERSIONING = OFF) 开始

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

于 2020-02-20T06:45:42.983 回答