如何解决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 INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tblReport'
AND COLUMN_NAME = 'EnableStartEndTimes'
不返回任何结果。
两者都没有:
SELECT *
FROM INFORMATION_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'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。