首页 > 数据库 > SQL Server > 正文

SQL SERVER 2005 XML 最佳实施策略目录视图

2020-03-09 23:58:22
字体:
来源:转载
供稿:网友

  用于原生 xml 支持的目录视图

  • 目录视图的目的是提供与 xml 用法有关的元数据信息。下面讨论了其中几个目录视图。

  xml 索引

  xml 索引项出现在目录视图 sys.indexes 中,索引"type"为 3。"name"列包含 xml 索引的名称。

  xml 索引还被记录在目录视图 sys.xml_indexes 中,它包含 sys.indexes 的所有列以及一些对 xml 索引有意义的特殊列。列"secondary_type"中的值 null 表示主 xml 索引;值"p"、"r"和"v' "分别代表 path、property 和 value 辅助 xml 索引。

  xml 索引的空间利用率可以在表值函数 sys.fn_indexinfo() 中找到。该函数会提供许多信息,例如,所占用的磁盘页数、平均行大小(字节)、记录数以及所有索引类型(包括 xml 索引)的其他信息。对于每个数据库分区都会提供这些信息;xml 索引使用基表的相同分区方案和分区函数。

  示例:xml 索引的空间利用率

select sum(pages)
from  sys.fn_indexinfo ('t', 'idx_xcol_path' , default, 'detailed')

  这会产生表 t 中的 xml 索引 idx_xcol_path 在所有分区中占用的磁盘页数。如果不使用 sum() 函数,结果将返回每个分区的磁盘页利用率。

  检索 xml 架构集合

  xml 架构集合在目录视图 sys.xml_schema_collections 中被枚举。xml 架构集合"sys"由系统定义,它包含无须显式加载就可在所有用户定义的 xml 架构集合中使用的预定义命名空间。该列表包含 xml、xs、xsi、fn 和 xdt 的命名空间。其他两个值得一提的目录视图是:sys.xml_schema_namespaces,它枚举了每个 xml 架构集合中的所有命名空间;sys.xml_components,它枚举了每个 xml 架构中的所有 xml 架构组件。

  内置的函数 xml_schema_namespace(schemaname, xmlschemacollectionname, namespace-uri) 可产生一个 xml 数据类型实例,该实例包含 xml 架构集合中所含架构(预定义的 xml 架构除外)的 xml 架构片段。

  可以用下列方式来枚举 xml 架构集合的内容:

  • 在 xml 架构集合的适当目录视图上编写 t-sql 查询。

  • 使用内置函数 xml_schema_namespace()。可以在该函数的输出上应用 xml 数据类型方法。然而,您无法修改基础 xml 架构。

  • 下面的示例阐述了这些概念。

  示例:枚举 xml 架构集合中的 xml 命名空间

  对于 xml 架构集合"mycollection"使用以下查询:

select xsn.name
from  sys.xml_schema_collections xsc join sys.xml_schema_namespaces xsn
  on (xsc.xml_collection_id = xsn.xml_collection_id)
where  xsc.name = 'mycollection'

  示例:枚举 xml 架构集合的内容

  下面的语句枚举了关系架构 dbo 中的 xml 架构集合"mycollection"的内容。

select xml_schema_namespace (n'dbo', n'mycollection')

  通过将目标命名空间指定为 xml_schema_namespace() 的第三个参数,可以按 xml 数据类型实例的形式获取该集合中的单独 xml 架构,如下所示。

  示例:输出 xml 架构集合中的指定架构

  下面的语句从关系架构 dbo 中的 xml 架构集合"mycollection"中输出目标命名空间为"http://www.microsoft.com/books"的 xml 架构。

select xml_schema_namespace (n'dbo', n'mycollection',
n'http://www.microsoft.com/books')

  查询 xml 架构

  如果您需要查询已经加载到 xml 架构集合中的 xml 架构,可以采用下列方式:

  • 在 xml 架构命名空间的目录视图上编写 t-sql 查询。

  • 除了将 xml 架构加载到 xml 类型系统中以外,创建一个包含 xml 数据类型列的表来存储 xml 架构。您可以使用 xml 数据类型方法来查询 xml 列。而且,您可以在该列上生成 xml 索引。然而,需要由应用程序来维护存储在 xml 列中的 xml 架构与存储在 xml 类型系统中的 xml 架构之间的一致性。例如,如果您从 xml 类型系统中删除了 xml 架构命名空间,则还必须从表中删除该命名空间以保持一致性。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表