您的位置:首页 > 数据库

MS SQL SERVER2005 XML 最佳实践13

2007-03-30 20:32 330 查看
复制代码
DECLARE @isbn varchar(20)SET     @isbn = '0-7356-1588-2'SELECT  xColFROM    TWHERE   xCol.exist ('/book/@ISBN[. = sql:variable("@isbn")]') = 1
 
可以用相似的方式使用 sql:column(),它提供了其他好处。可以使用列的索引来提高效率,这由基于开销的查询优化器决定。另外,计算列可以存储提升的属性。

用于本机 XML 支持的目录视图
目录视图用于提供有关 XML 用法的元数据信息。以下部分中讨论了其中某些视图。

XML 索引
XML 索引项位于目录视图 sys.indexes 中,索引“type”为 3。名称列包含 XML 索引的名称。

另外,XML 索引还记录在目录视图 sys.xml_indexes 中。此视图包含 sys.indexes 的所有列和对 XML 索引有用的某些特定列。secondary_type 列中的值 NULL 表示主 XML 索引;值“P”、“R”和“V”分别表示 PATH、PROPERTY 和 VALUE 辅助 XML 索引。

可以在表值函数 sys.dm_db_index_physical_stats 中找到 XML 索引的空间使用情况。它提供了所有索引类型的相关信息,例如,占用的磁盘页数、平均行大小(字节)和记录数。其中也包括 XML 索引。对于每个数据库分区,都提供此信息。XML 索引使用基表的相同分区方案和分区函数。

检索 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 架构集合的相应目录视图的 Transact-SQL 查询。

使用内置函数 XML_SCHEMA_NAMESPACE()。您可以对此函数的输出应用 xml 数据类型方法。但不能修改基础 XML 架构。

这些在下列示例中进行了说明。

示例:枚举 XML 架构集合中的 XML 命名空间
对 XML 架构集合“myCollection”使用下面的查询:

  复制代码
SELECT XSN.nameFROM    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 架构命名空间的目录视图的 Transact-SQL 查询。

创建包含 xml 数据类型列的表以存储 XML 架构,并将这些架构加载到 XML 类型系统中。可以通过使用 xml 数据类型方法查询 XML 列。另外,还可以对此列生成 XML 索引。但是,使用此方法时,应用程序必须保持 XML 列中存储的 XML 架构和 XML 类型系统之间的一致性。例如,如果从 XML 类型系统中删除 XML 架构命名空间,还必须从表中删除它以保持一致性。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息