【问题标题】:DACPAC complaining about views with FOR SYSTEM_TIME ClauseDACPAC 抱怨带有 FOR SYSTEM_TIME 子句的视图
【发布时间】:2020-02-22 06:13:53
【问题描述】:

我们使用 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 子句的视图。

谢谢!

【问题讨论】:

  • 你有临时表吗?
  • 您使用的是最新版本吗:docs.microsoft.com/en-us/sql/tools/…?
  • 我今天正在下载最新版本,看看它是否更好用。谢谢
  • 是的,数据库中的所有表都是系统版本的,当然视图除外。
  • 您最终找到解决方案了吗?

标签: sql-server dacpac temporal-tables


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多