2

我们使用 SSDT DACPAC 来部署我们的数据库项目。我们在发布时收到此错误

错误 SQL72014:.Net SqlClient 数据提供程序:消息 13544,级别 16,状态 1,过程 sp_refreshsqlmodule_internal,第 85 行临时 FOR SYSTEM_TIME 子句只能用于系统版本控制的表。“reporting.dbo.VW_xxxxxxx”不是系统版本表。错误 SQL72045:脚本执行错误。

可以在 SSMS 中创建和更改视图而无需投诉。
我们在视图中封装了一些逻辑,因此我们仍然希望在视图中使用 FOR SYSTEM_TIME。如何让 DACPAC 使用这些对象和子句?

https://docs.microsoft.com/en-us/sql/relational-databases/tables/querying-data-in-a-system-versioned-temporal-table?view=sql-server-ver15 使用 FOR 显示视图SYSTEM_TIME 子句。

谢谢!

4

1 回答 1

1

我们在部署 Azure DevOps 数据库时遇到了同样的问题 - 该过程似乎会删除系统版本控制以更新表,然后刷新视图,然后在修改后的表上添加系统版本控制。

我们的数据库是从 Visual Studio 2019 数据库项目构建的。我们将视图的 SQL 文件修改为不属于构建的一部分(属性 -> 构建操作:无)并从部署后脚本运行它。

由于这可以部署到新数据库以及更新现有数据库,因此我们必须在 CREATE 之前将视图修改为 DROP IF EXISTS。

于 2020-06-26T22:25:55.613 回答