visual-studio-2017 - 重命名系统版本表 Visual Studio SQL 项目中的列

标签 visual-studio-2017 temporal sqlproj refactoring-databases

我希望让 Visual Studio 的 SQL Schema Compare 生成 delta 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>

最佳答案

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

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

关于visual-studio-2017 - 重命名系统版本表 Visual Studio SQL 项目中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43195740/

相关文章:

在 Azure DevOps 上构建 sqlproj

sql-server - 使用最新版本的 SSDT SqlPackage.exe 部署 SQL Server dacpac 会删除列默认值

xamarin.android - 错误 : No resource found that matches the given name (at 'icon' with value '@mipmap/Icon' )

Xamarin.Forms netstandard 项目因更新到 VS 2017.3 而中断

javascript - Uncaught RangeError : Duration field days not supported by Temporal. Instant(在不使用魔数(Magic Number)的情况下将 1 天添加到临时瞬间)

c - 绕过 Nios II 处理器中的数据缓存

reshape 和均值计算

visual-studio - VS2017 中没有显示控制台窗口

c++ - 编译时 C++ 项目抛出错误 C2228,这不是预期的,因为控件在运行时未到达该点