table 不在 information_schema 或 systables 中是如何发生的?
How does a table not being in information_schema or systables happen?
我经常 运行 访问 MSSQL 数据库,这些数据库的表比 information_schema
或 systables
中列出的要多得多。
例如,我是 querying a database right now,但只获取表 spt_fallback_db
、spt_fallback_dev
、spt_fallback_usg
、spt_monitor
、spt_values
. (1)
这是怎么发生的?
而且 - 它可以轻松修复吗?
(1) 我应该澄清这不是权限问题,因为我是数据库的系统管理员;大约有 200 张桌子,我对所有桌子都有完全的权限。
@DeadZone 说对了,查询有一些问题。
我正在使用:
DECLARE @command varchar(1000)
SELECT @command = 'SELECT * FROM sysobjects WHERE xtype=''U'' '
EXEC sp_MSforeachdb @command
但它只会显示系统表。因此,我切换到更直接的查询以查看发生了什么并能够查看表:
use MYDATABASENAME;
SELECT * FROM sysobjects WHERE xtype='U'
我经常 运行 访问 MSSQL 数据库,这些数据库的表比 information_schema
或 systables
中列出的要多得多。
例如,我是 querying a database right now,但只获取表 spt_fallback_db
、spt_fallback_dev
、spt_fallback_usg
、spt_monitor
、spt_values
. (1)
这是怎么发生的?
而且 - 它可以轻松修复吗?
(1) 我应该澄清这不是权限问题,因为我是数据库的系统管理员;大约有 200 张桌子,我对所有桌子都有完全的权限。
@DeadZone 说对了,查询有一些问题。 我正在使用:
DECLARE @command varchar(1000)
SELECT @command = 'SELECT * FROM sysobjects WHERE xtype=''U'' '
EXEC sp_MSforeachdb @command
但它只会显示系统表。因此,我切换到更直接的查询以查看发生了什么并能够查看表:
use MYDATABASENAME;
SELECT * FROM sysobjects WHERE xtype='U'