Azure SQL Server 2016临时表中的计算列

Mac*_*ham 5 sql azure sql-server-2016

我正在寻找在我们的数据库中创建时态表https://msdn.microsoft.com/zh-cn/library/mt604462.aspx,但是我无法使用几个具有计算列的表。

返回的错误消息很容易解释

“使用用户定义的函数定义了计算列,而系统版本表不允许使用该函数”

但我希望有一种方法可以排除或忽略被跟踪的列?

我尝试删除创建历史记录表的计算列,然后将计算列添加回表中,但这没有用。

任何帮助表示赞赏。

谢谢

编辑-
我无法找到一种方法来忽略被跟踪的列,但是我们能够重构出使用UDF的列,从而使我们能够使用时态表。

Bri*_*den 5

我正在努力将计算列添加到现有的系统版本表中。万一其他有类似问题的人落在这里,我最终意识到历史表不会以相同的方式对待列。它最终类似于在基表上具有IDENTITY列,但是这将导致在历史表上出现常规INT字段。

如果您尝试将计算列添加到系统版本化的(时间)表中:

  • 首先关闭系统版本控制
  • 然后将您的计算列添加到基表
  • 验证结果计算列的“类型”
  • 将具有适当静态类型的列添加到历史记录表
  • 重新打开系统版本控制(不要忘记指定历史记录表)

我觉得很奇怪,当您重新打开系统版本控制时,可能会意外省略history_table。我希望它会恢复对同一表的版本控制,或者考虑到它可能有点意外的行为而引发某种错误。

@ pasquale-ceglie-我的声誉不足以发表评论,但我想扩大您的发言范围。您应该能够将大多数计算列与时态表一起使用,只需更多地手动即可。基本上,您无法复制带有计算列的架构定义,但是可以在尝试打开所有内容之前复制结果列并生成适当的历史记录表。这两个表之间的定义略有不同(起初让我很困惑)。我订阅了这里,如果上面的内容不清楚并且很好奇,请对我执行ping操作。