加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – SQL Server上不可靠的information_schema架构信息

发布时间:2020-12-12 06:05:29 所属栏目:MsSql教程 来源:网络整理
导读:SQL Server文档 here说,information_schema.tables的table_schema字段是“不可靠的”,获取对象模式的正确方法是查询sys.objects. 任何人都可以详细说明information_schema.tables报告的架构如何以及何时可能不正确? 解决方法 遗憾的是,这个问题没有得到解决,
SQL Server文档 here说,information_schema.tables的table_schema字段是“不可靠的”,获取对象模式的正确方法是查询sys.objects.

任何人都可以详细说明information_schema.tables报告的架构如何以及何时可能不正确?

解决方法

遗憾的是,这个问题没有得到解决,只是部分地说出了贪婪,更重要的是要将它从未回答的队列中删除,我会在答案中提出几点意见.

>文档中的措辞不准确,正在纠正中(见Connect #686118).我不确定他们是否会同时更正2005,2008和2008 R2文档,或者旧版本是否会更新.关键是我无法想象任何一个视图中的模式不正确的情况,但更重要的是,当sys.objects正确时,info_schema不正确.后者是不可能的 – info_schema视图完全基于sys.objects视图(只看SELECT OBJECT_DEFINITION(OBJECT_ID(‘INFORMATION_SCHEMA.TABLES’));),所以如果一个不正确,它们都是不正确的.可能有些模糊的情况,它们都可能不正确,但在当前版本中不是(例如,在SQL Server 2000中,配置选项允许更新启用,从sysusers中删除拥有对象的用户 – 今天不太相关或可能,而不是我愿意尝试的东西,但它是我能想象的唯一一个可以在任何时间点激发当前措辞的东西.
>通常,应避免使用INFORMATION_SCHEMA视图,以支持SQL Server 2005中引入的目录视图(并从那时起进行了扩充).为什么?因为在将新功能添加到SQL Server时继续开发目录视图,而info_schema视图则没有.正如我在评论中提到的,尝试在info_schema中查找有关筛选索引的信息.包含的列,XML索引,标识/计算列,针对唯一索引的外键也是如此 – 这些都在info_schema视图中完全缺失或表示不同.在Denali中,他们为Sequences添加了一个info_schema视图,但这又符合标准的最低要求,并且不包含有关特定于SQL Server的实现细节的任何信息(例如,它是否已用尽,以及它们是否添加了任何新功能未来你可以确定info_schema视图不会保留在循环中).您坚持使用info_schema视图的唯一情况是:(a)您是否正在编写需要在兼容info_schema的平台上工作的元数据例程;(b)您没有使用任何特定于平台的功能.除了多平台供应商工具之外,这可能是一种非常罕见的情况(即使在这种情况下,也可能导致使用这些功能的客户不满意而且该工具没有提取它们).
>我提交了一份单独的Connect建议(Connect #686121),他们在联机丛书中的所有INFORMATION_SCHEMA视图主题上涂抹了关于此不完整性的警告.我不认为它们不是从SQL Server中获取元数据的首选方式,并且可以责怪人们没有看到这一点 – 毕竟,我们总是被告知使用符合标准的方法是“最佳实践”和使用专有方法是相反的.与许多数据库事物一样,“它取决于” – 但我怀疑,通常情况下,您最好使用sys目录视图,除非您处于极少数情况下,您只使用SQL中的功能标准通用的服务器.在这种情况下,我认为我没有遇到任何容量的单一实例,但如果它们确实存在,我很乐意了解它们.

编辑我也在这里写了关于INFORMATION_SCHEMA不可靠性的博客:

http://sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/the-case-against-information-schema-views.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读