INFORMATION_SCHEMA.COLUMNS 突然为空
Posted
技术标签:
【中文标题】INFORMATION_SCHEMA.COLUMNS 突然为空【英文标题】:INFORMATION_SCHEMA.COLUMNS suddenly empty 【发布时间】:2021-04-13 23:25:14 【问题描述】:昨天我在 SQL Server 数据库上使用 INFORMATION_SCHEMA.COLUMNS 中的 COLUMN_NAMES 字段开发了一个 SQL 查询。 查询工作得非常好,尤其是 COLUMN_NAMES 的查询正确地输出了我的列名。
但是,今天早上我尝试重新运行完全相同的查询,但这次我得到了一个空表。缩小问题范围,归结为以下查询突然给出 0 行:
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'MyTableName'
ORDER BY
ORDINAL_POSITION
我严格来说没有对服务器本身进行任何更改。有没有人对可能发生的事情有所了解?
【问题讨论】:
有关Metadata Visibility Configuration 的文档可能会有所帮助。 今天以其他用户身份连接? @jarlh 我不是唯一访问数据库的人,但我自己总是使用相同的登录名(Windows 身份验证)连接。 您确定在同一个数据库的上下文中执行查询吗?你能明确地添加它的名字吗(FROM your_db.INFORMATION_SCHEMA.COLUMNS)? 【参考方案1】:好的,正如@sepupic 建议的那样,我尝试将数据库名称添加到查询中,即
SELECT
COLUMN_NAME
FROM
MyDBName.INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'MyTableName'
ORDER BY
ORDINAL_POSITION
它确实解决了问题。我不确定我是否理解为什么查询在昨天没有添加此数据库名称的情况下在完全相同的上下文中工作。
我想无论如何将它添加到查询中是个好习惯,所以我会坚持下去。
【讨论】:
可能昨天您在突出显示该数据库时打开了一个查询编辑器,因此它打开了默认到该数据库的连接(就像您输入了use SomeDbName;
),但今天您没有,所以它没有。以上是关于INFORMATION_SCHEMA.COLUMNS 突然为空的主要内容,如果未能解决你的问题,请参考以下文章
MySQL and Sql Server:Getting metadata using sql script (SQL-92 standard)