在SQL Server上运行基本选择会询问不存在的列名,为什么?

时间:2014-05-15 00:41:55

标签: sql sql-server

我们让另一位开发人员来完成并为我们完成了一些工作。不幸的是,他在我们的团队中工作不好,管理层让他离开。

由于这个原因,我现在无法调试他的代码并撤消已完成的工作。他没有记录他的代码(他被释放的原因之一),很少注意到任何东西,因此我不知道从哪里开始寻找。

当我在DB中的两个特定表上运行基本SELECT时:

SELECT * FROM table_name

使用SQL Server Management Studio我得到了这个......

Msg 207, Level 16, State 1, Line 1
Invalid column name 'eventTime'.

有一个eventTime列,但没有必要,并且没有在任何PHP文件中使用,但是它现在似乎与表直接相关,我不知道在哪里查找它。提供的错误消息指向我的SELECT语句,但它没有任何问题,甚至也没有引用eventTime列。

我看过,似乎没有引用此表的任何触发器或存储过程。还有其他方法可以尝试追踪这个吗?

1 个答案:

答案 0 :(得分:4)

这听起来像是一个难以解决的问题。以下是一些想法。

我的第一个想法是table_name是一个视图,并且某种程度上视图与基础表定义不同步。在某些情况下,我看到了类型问题。我想象列名可能会发生同样的情况。

下一个想法是table_name已经计算了列。在这种情况下,计算列可以使用函数,函数调用可能会生成错误。我想不出用简单的select运行代码的任何其他方式。

我不认为问题是外键约束,除非。因此,第三个选项是外键约束引用同一数据库中的表但是引用不同的模式。不同的架构可能具有使表无法访问的权限。

对于其中任何一个,在SSMS中编写定义脚本将帮助您解决问题。