在 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.
我正在探索 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.