首页 > 解决方案 > 数据存在时 SSDT 更新架构

问题描述

我有一个带有一些表结构的 SQL Server DB 项目,例如:

tblUser
Id
名称
CustomerTypeId

这是生产数据库,它包含大量数据。接下来,我需要添加一个新表

tbl 客户
ID
名称

并从 tblUser 表中删除 CustomerTypeId 列,并将数据从 tblUser 移动到 CustomerTypeId = 3 的 tblCustomer。

第一个问题发生在我尝试更新方案时 - 可能的数据丢失,因为我删除了 CustomerTypeId 列,下一个问题是如何将数据从一个表迁移到另一个表以及如何跟踪当前是否应用了迁移并且我不需要再次申请。

标签: sql-serverdatabase-migrationsql-server-data-toolsdata-migrationdatabase-project

解决方案


您可以在发布配置文件配置中选择禁用“可能的数据丢失”失败。 在此处输入图像描述

对于第二部分,可能性很小,但是所有这些都具有相同的逻辑->以不会多次执行或使脚本具有幂等性的方式编写脚本,因此您将能够根据需要多次重新执行它:

  • 在您的 post 脚本中检查是否已经进行了插入/更新,并在仅需要时运行插入,例如:
IF NOT EXISTS (SELECT * FROM table WHERE SOME_COLUMN = 3)
BEGIN
  -- your logic here
END
  • 另一种可能的方法是将数据操作脚本放到单独的文件中,并检查它是否每次都运行。

推荐阅读