SSDT- SQL DB DEPLOY Dacpac - 在现有生产服务器上失败

SSDT- SQL DB DEPLOY Dacpac - on existing production SERVER failed

我正在使用 Azure/Release 来 SQL 部署。我有一个 DACPAC 文件要部署,但我 (1) 更改了列数据类型,(2) 删除了 table 上已有数据的一些列,(3) 并添加了一些 FK 列。但是因为已经有这方面的生产数据,所以部署失败了。这些场景应该采取什么解决方案? SQL DEPLOY image

  The column [dbo].[TableSample][ColumnSample] is being dropped, data loss could occur. 

  The type for column Description in table [dbo].[Table2] is currently NVARCHAR (1024) NULL but is being changed to NVARCHAR (100) NOT NULL. Data loss could occur. 

  The type for column Id in table [dbo].[Table3] is currently UNIQUEIDENTIFIER NOT NULL but is being changed to INT NOT NULL. 
  There is no implicit or explicit conversion. *** 

  The column [sampleColumnId] on table [dbo].[Table4] must be added
  , but the column has no default value and does not allow NULL values. If the table contains data, the ALTER script will not work. 
  To avoid this issue you must either: add a default value to the column, mark it as allowing NULL values, or enable the generation of smart-defaults as a deployment option. 

您的 "data loss" 警告可能会通过在您的发布选项中使用 "allow data loss" 选项来关闭。它只是警告您要删除列或使用更小的数据长度。

您的 "Table3" 更改无法保留数据。 GUID 不适合 INT 列。您可能需要查看 dropping/re-creating 和 table 或将当前 ID 列重命名为其他内容(可能是 OldId)并添加一个 INT 类型的新 ID,可能带有 Identity(1,1)。

但是最后一列 - 您正在尝试向现有 table 添加没有默认值的 NOT NULL 列。允许 NULL 或在列上放置一个命名的默认值,以便可以添加该列。