0

已运行多年的视图从多个表中选择特定列并将它们连接起来。最近,我在其中一个表中添加了一列,vew 不再正常工作。查询结果中的一列包含来自表中另一列的数据。我从脚本重建了视图 - 没有更改脚本 - 问题就消失了。该视图不查看新列。

到底是怎么回事?

4

1 回答 1

0

您的查询正在使用 SELECT *。你只需要重新编译它。

编译视图时,它编译记录中字段的偏移量,而不是字段的名称。如果基础表发生变化。. . 好吧,偏移量不再到达正确的位置。

不幸的是,我在尝试弄清楚为什么一个数字会出现数字错误大约 5 个小时后才知道这一点——从早上 6:00 开始。所以,这个问题甚至会影响不同类型的数据。

我通过使用 SQL Server Management Studio 将视图编写为变更脚本,然后运行代码(不做任何更改)来进行重新编译。但是,您可以通过放入列的显式列表来更改代码,并且将来不会出现此问题。

您还可以设置一个脚本,每天晚上重新编译您的所有视图,以防止将来出现此问题。我们现在也有这样的脚本。

于 2012-08-15T20:05:09.393 回答