奇怪的SQL行为

时间:2012-08-15 17:41:03

标签: sql-server-2008

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

发生了什么事?

1 个答案:

答案 0 :(得分:0)

您的查询是使用SELECT *。你只需要重新填充它。

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

不幸的是,我在尝试弄清楚为什么数字出现数字错误大约5个小时之后才学会了这一点 - 从早上6点开始因此,这个问题甚至会影响不同类型的数据。

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

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