在预部署脚本中重命名表后,如何强制使用 SQLPackage 创建表?

问题描述

根据另一个问题的 this answer,我应该能够在预部署脚本中重命名现有表,并且 dacpac 应该在部署过程中重新创建原始表。但是,我遇到的问题是该表不会重新创建,而是在视图或存储过程使用该表时出现错误。有没有办法在部署过程中强制创建一个重命名的表,使用原来的名字?

我确实使用了 /Properties:CreateNewDatabase=True 但它似乎不起作用。

解决方法

CreateNewDatabase 选项定义为“指定在发布到数据库时是更新目标数据库还是删除并重新创建目标数据库。”

因此要保留重命名的表,您需要执行更新,因此 /Properties:CreateNewDatabase=False

我认为您需要包含以下开关:

DropObjectsNotInSource=FALSE 指定当您发布到数据库时,数据库快照 (.dacpac) 文件中不存在的对象是否将从目标数据库中删除。此值优先于 DropExtendedProperties。

/Properties:BlockWhenDriftDetected=False 指定是否阻止更新架构不再与其注册匹配或未注册的数据库。