SQL 列存在但不可见且无法选择

问题描述

sql Server 中现有和不存在的列。

我目前正在使用 sql Server 2017,并且在“tblReport”表中有一个“EnableStartEndTimes”列。尝试对表中的列进行选择时,它说它不存在。

但是当尝试将该列添加到表中时,它说它确实存在。通过我的 C# 代码,该列不存在。

在同一个查询窗口内连续运行以下两个查询(选择单一数据库):

从 tblReport 中选择 EnableStartEndTimes 更改表 tblReport 添加 EnableStartEndTimes 位为空

给出以下结果:

Msg 207,Level 16,State 1,Line 8 无效的列名 '启用开始结束时间'。

完成时间:2021-03-10T09:33:47.0011192+02:00

Msg 2705,State 6,Line 9 每个表中的列名必须是 独特。表 'tblReport' 中的列名 'EnableStartEndTimes' 是 多次指定。

完成时间:2021-03-10T09:33:56.6904942+02:00

运行:

SELECT *
FROM @R_266_4045@ION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tblReport'
AND COLUMN_NAME = 'EnableStartEndTimes'

不返回任何结果。

两者都没有:

SELECT *
FROM @R_266_4045@ION_SCHEMA.COLUMNS
WHERE  COLUMN_NAME = 'EnableStartEndTimes'

在设计器中也看不到 EnableStartEndTimes、大写或小写。

需要注意的几点:

  • 查询在同一个查询窗口中运行。因此,相同的数据库仍然被选中。
  • 打开和关闭 sql 没有区别。
  • 该列在表设计视图中也不可见。
  • 鞋面已被移除,结果没有区别。

所以我的假设是对系统表中某处的列(可能之前创建不正确?)的引用。我在任何地方都找不到对“EnableStartEndTimes”的任何引用?

解决方法

尝试运行以下命令并检查架构或其他重复项之间是否存在任何冲突。

select Schema_Name(t.schema_id) Schema,t.[name]
from sys.columns c join sys.tables t on t.object_id=c.object_id
where c.name='EnableStartEndTimes'