SQL Server文档这里说
information_schema.tables
的table_schema
字段是“不可靠的”,正确获取对象模式的方法是查询sys.objects
。请问是否有人可以详细说明何时和如何出现information_schema.tables
报告的模式不正确的情况?
EXEC sp_helptext 'INFORMATION_SCHEMA.TABLES'
的输出,这确实使用了sys.objects
,所以看起来有点奇怪。 - Martin Smithsys
目录视图来获取元数据,而不是INFORMATION_SCHEMA
,主要是因为前者将被扩展以支持新功能,但后者将相对停滞不前。(例如,尝试使用INFORMATION_SCHEMA
查找有关过滤索引的信息。) - Aaron BertrandLEFT JOIN
操作?在我看来,这表明有一些情况下模式可能无效(但我头脑中无法想象)。但是警告消息(包括所有不正确的语法)毫无意义,因为这意味着sys.objects
指向的sys.schemas
中的行也是无效的,那么使用sys.objects
(或更合适的sys.tables
)会比INFORMATION_SCHEMA
更可靠吗? - Aaron Bertrandsys.sysobjects
中的模式信息可能不正确如此处所述。也许他们只是在一些事情上贴了太多的警告? - Martin Smith