我使用备份还原技术和一组传输后操作(如DBCC UPDATEUSAGE
or )将数据库从 SQL Server 2008R2 迁移到 SQL Server 2019(企业版) UPDATE STATISTICS XXX
。
在统计更新时,我收到以下错误:
Msg 402, Level 16, State 1, Procedure ZZZZ, Line 5 [Batch Start Line 0]
The data types datetime and time are incompatible in the add operator.
Msg 4413, Level 16, State 1, Line 1
Could not use view or function 'ZZZZ' because of binding errors.
我知道该消息非常明确(在 2008R2 上语法正确的视图在 2019 年不再存在)。我不明白为什么定义WITH SCHEMABINDING
的无效视图会阻止更新基础表上的统计信息。
此外,在使用子句查询基础表时,我会收到相同的错误消息WHERE
,除非我使用以下提示强制 FULLSCAN:
OPTION(TABLE HINT( $mytable, FORCESCAN ))
我知道如果对底层架构绑定对象进行 DDL 更改,SQL Server 会触发错误,但我不明白为什么,如果视图无效,则底层对象不能像往常一样使用。
我确定有一个解释(例如由于视图无效而无法处理模式绑定视图的保护机制),但我无法在文档中确定。
我跑了一个DBCC CHECKDB
没有问题的。我将兼容级别更改为150。