我们使用SSDT DACPAC部署我们的数据库项目。发布
时,我们会收到此错误错误SQL72014:.Net SqlClient数据提供程序:消息13544,级别16,状态1,过程sp_refreshsqlmodule_internal,第85行Temporal 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子句的视图。
谢谢!
答案 0 :(得分:1)
我们在使用Azure DevOps数据库部署时遇到了同样的问题-该过程似乎是删除系统版本控制以更新表,然后刷新视图,然后将系统版本控制重新添加到修改后的表上。
我们的数据库是从Visual Studio 2019数据库项目构建的。我们将视图的SQL文件修改为不包含在构建中(属性->构建操作:无),并从部署后脚本中运行了该文件。
由于这可以部署到新数据库并更新现有数据库,因此我们必须在CREATE之前将视图修改为DROP IF EXISTS。