在 SQL 服务器部署中使用 DACPAC 有哪些限制

What are the limitations using DACPAC in SQL Server deployment

我正在探索 SQL 服务器数据库部署的 DACPAC 功能。

我正在使用 EXTRACT 操作获取从源生成的 DACPAC,并使用 PUBLISH 操作将其部署到目标。

提取

sqlpackage.exe /Action:Extract /SourceDatabaseName:%sourcedatabaseName% /SourceServerName:%sourceserverName% /TargetFile:%FilePath%

发布

sqlpackage.exe /Action:Publish /SourceFile:%SourceFile% /TargetServerName:%serverName% /TargetDatabaseName:%databaseName%

这里,当我在源 table 中引入新列时,当我进行 DACPAC 部署时,它工作正常。新列反映在目标中。

但是,当我在源中删除列并进行 DACPAC 部署时,更改没有反映出来。该列未在目标中删除。是不是因为我那一栏有数据?

在另一种情况下,我在源代码中有一些测试 tables 和测试存储过程,当我生成 DACPAC 并进行部署时,同样的测试 tables 和存储过程正在获取部署在目标中。有没有办法限制这个?

所以想了解使用 DACPAC 的所有限制是什么?

使用 SQL 服务器 2019。

从非空中删除列 table 可能会导致数据丢失。

它可以被覆盖:/p:BlockOnPossibleDataLoss=false

DacDeployOptions.BlockOnPossibleDataLoss Property

Get or set boolean that specifies whether deployment should stop if the operation could cause data loss.

True to stop deployment if possible data loss if detected; otherwise, false. Default is true.