问题描述
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、大写或小写。
需要注意的几点:
所以我的假设是对系统表中某处的列(可能之前创建不正确?)的引用。我在任何地方都找不到对“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'