我试图有一个自动计算的列来告诉我两个日期之间的小时数差异。
它不会让我这样做,因为数据库有
ANSI_WARNINGS = OFF
。
我知道最好的做法是设置
ANSI_WARNINGS ON
并处理问题,而不是试图隐藏它们,但是,我不是数据库的所有者,所以我需要尽我所能。
我也知道,如果删除“persisted”关键字,它会起作用,但我需要删除它在进行查询时产生的开销。
有什么方法可以调整我的计算列以允许其创建吗?
这是我的SQL语句:
ALTER TABLE TABLE_NAME
ADD DATE_DIFFERENCE
AS ROUND( (DATEDIFF(minute, DATETIME1, DATETIME2) / 60.00), 2) PERSISTED
我收到此错误:
ALTER TABLE 失败,因为以下 SET 选项设置不正确:“ANSI_WARNINGS”。验证 SET 选项是否正确用于索引视图和/或计算列上的索引和/或筛选索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作
简短回答“否” - 文档很清楚,当您在计算列或索引视图上创建或操作索引时,ANSI_WARNINGS 必须为 ON。
如果您不是数据库的所有者并且无法更改 ANSI_WARNINGS 设置,那么您就无法执行此操作 - 因此您需要考虑其他方法来完成此操作。你可以调查例如表上的触发器只是简单地设置“正常”(未计算)列的值,或者您可能有一个计划作业定期(例如每小时)更新该列 - 这取决于您的需求你没有详细说明 - 所以我真的不能推荐任何东西