• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> 数据库 >> MySQL >> 详细内容
 

推荐文章

  • 《MySQL管理员指南》之一----MySQL安全性指南
  • 实例讲解MYSQL数据库的查询优化技术
  • MySQL查询优化技术讲座
 
 

热点文章

  • 支持中文的MySQL 5.1+ 全文检索分词插件
  • MySQL数据导入导出方法与工具mysqlimport
  • 《MySQL管理员指南》之一----MySQL安全性指南
  • MySql管理的一点心得&MYSQL命令行模式
  • 修改MySQL的默认密码
  • 使用 SQL Server 2005中的 CLR 集成
  • 使用MySQL全文检索
  • Microsoft SQL Server 2005 中的 XML 支持
  • 简介Mysql中的临时表使用方法
  • MySQL查询优化系列讲座之查询优化器
  • 使用Excel分析MySQL数据
  • MySQL的常见错误的解决方法(英文)
 
 

相关文章

  • 使用Microsoft SQL Server 2005 构建更好的应用程序
 
 

百度搜索

 
 

Microsoft SQL Server 2005 中的 XML 支持

  • 阅览次数:
  • 文章来源: cp整理
  • 原文作者: 不详
  • 整理日期: 2007-04-03
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

 

 

XML 架构集合的目录视图

 

XML 架构集合的 SQL 目录视图允许用户重新构造单独的 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() 接受关系架构和 XML 架构集合的名称,以及 XML 架构的目标命名空间(可选)。它返回包含该 XML 架构的 XML 数据类型实例。如果目标命名空间参数被省去,那么该内置函数返回的 XML 实例就会包含 XML 架构集合中除预定义 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 架构集合输出指定的 XML 架构

下面的语句从(关系)架构 dbo 中的 XML 架构集合“myCollection”输出带有目标命名空间 http://myBooks 的 XML 架构。

SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection', 
N'http://myBooks')

对 XML 架构集合的访问控制

通过使用 SQL Server 2005 的安全模型,可以像任何 SQL 对象一样保护 XML 架构集合。您可以授予用户在数据库中创建 XML 架构集合的特权。每个 XML 架构集合都支持 ALTER、CONTROL、TAKE OWNERSHIP、REFERENCES、EXECUTE 和 VIEW DEFINITION 等权限。

执行 ALTER XML SCHEMA COLLECTION 语句需要 ALTER 权限。

如果要通过执行 ALTER AUTHORIZATION 语句将 XML 架构集合的所有权从一个用户转移到另一个用户,则需要 TAKE OWNERSHIP 权限。

REFERENCES 权限授权用户在任何需要架构绑定的地方使用 XML 架构,例如,类型化或约束 XML 列和参数。

要检查用户针对 XML 架构集合插入或更新的值的有效性,则需要 EXECUTE 权限。使用 XML 数据类型从类型化的 XML 列、变量和参数查询值也需要此权限。

VIEW DEFINITION 权限允许用户访问目录视图中与 XML 架构集合(所有的 XML 架构都包含其中)对应的行,所有 XML 架构组件都包含在这些 XML 架构中。

CONTROL 权限授予用户执行 XML 架构集合中任何操作的权限,包括使用 DROP XML SCHEMA COLLECTION 语句撤消 XML 架构集合。这意味着具有 XML 架构集合的其他权限。

除了表或 XML 列中的其他权限以外,还需要 XML 架构集合的权限。用户需要权限来创建表,并且还需要 XML 架构集合 C 中的 REFERENCES 权限来创建包含 XML 列 X(按照 C 类型化)的表 T。具有将数据插入列 X 的权限的用户可以这样做,前提是用户具有 XML 架构集合 C 中的 EXECUTE 权限。类似地,要使用 XML 数据类型方法来查询列 X 中的数据,用户需要列 X 中的 SELECT 权限和列 C 中的 EXECUTE 权限。然而,对于从列 X 检索整个 XML 值,列 X 中的 SELECT 权限就足够了,例如 SELECT X FROM T 或 SELECT * FROM T。

可以从用户撤回权限,还可以通过 SQL Server 2005 的安全模型拒绝用户的权限,正如允许其拥有权限一样。

目录视图的可视化

XML 架构集合中具有 ALTER、TAKE OWNERSHIP、REFERENCES、VIEW DEFINITION 或 CONTROL 权限的用户可以在目录视图中访问 XML 架构集合的行及其所包含的 XML 架构和它们的 XML 架构组件。该主体还可以通过使用内置函数 XML_SCHEMA_NAMESPACE() 来访问 XML 模式集合的内容。

如果用户的 VIEW DEFINITION 权限被拒绝,则该用户就不能在目录视图中或通过使用 XML_SCHEMA_NAMESPACE() 访问 XML 架构集合。

对 FOR XML 的增强

可以将 TYPE 指令生成的 XML 数据类型实例分配给 XML 列、变量或参数,或者使用 XML 数据类型方法对其进行查询。这使得可以嵌套 SELECT ...FOR XML TYPE 语句。

PATH 模式允许用户指定需要出现列值的 XML 树中的路径,并且与上述嵌套一起使用时更易于编写(与 FOR XML EXPLICIT 相比),不过,它也不可用于深层次。

与 ELEMENTS 一起使用的指令 XSINIL 可以将 NULL 映射为具有属性 xsi:nil="true" 的元素。新的 ROOT 指令允许在所有的 FOR XML 模式下指定根节点。新的 XMLSCHEMA 指令生成 XSD 内联架构。

要获得更多关于改进和示例的信息,请参阅由 Michael Rys 撰写的“What's New in FOR XML in Microsoft SQL Server”(MSDN 于 2004 年 6 月发布)。

性能指导原则

XML 数据模型比关系数据模型更加丰富,因而也更加复杂。XML 数据模型不仅允许对复杂的数据进行建模,而且还必须保留层次关系和数据中的文档顺序。文档顺序是通过基于 XML 节点标识符的排序维护的;这同时维护了层次关系。所有这些都对更复杂的查询计划产生了影响。

为了获得更好的性能,应该将结构化数据存储在表的关系列中。如果数据是半结构化或非结构化的,则需要选择使用 XML 数据模型来进行建模,并且加入 XML 标记,不过,别指望会有什么好的性能。XML 架构有助于查询优化。

SQL Server CLR 中的 XML 支持

通过使用 SQL Server CLR 支持,可以在托管代码中编写服务器端逻辑来执行业务规则。可以采用多种方法来将这些业务逻辑添加到 XML 数据中:

•

可以在 XML 值传入的托管代码中编写 SQLCLR 函数,并且使用 System.Xml 命名空间提供的 XML 处理功能。这样的一个例子是将 XSL 转换应用于 XML 数据,如下所述。另外,还可以将 XML 反序列化成一个或多个托管类,并且使用托管代码对它们进行操行。

•

可以编写 T-SQL 存储过程和函数来调用 XML 列中的处理,以满足您的业务需要。

例:应用 XSL 转换

考虑接受 XML 数据类型实例的 CLR 函数 TransformXml() 和存储在文件中的 XSL 转换,将该转换应用到 XML 数据,并返回已转换的 XML 结果。用 C# 编写的主干函数如下:

public static SqlXml TransformXml (SqlXml XmlData, string xslPath) {
   // Load XSL transformation
   XslTransform xform = new XslTransform();
   XPathDocument xslDoc = new XPathDocument (xslPath);
   xform.Load (xslDoc.CreateNavigator(),null);

   // Load XML data 
   XPathDocument xDoc = new XPathDocument (XmlData.CreateReader());
   XPathNavigator nav = xDoc.CreateNavigator ();

   // Return the transformed value
   SqlXml retSqlXml = new SqlXml (xform.Transform(nav, null));
   return (retSqlXml);
} 

一旦注册了程序集并创建了用户定义的 T-SQL 函数 SqlXslTransform()(与 TransformXml() 相对应),就可以从 T-SQL 调用该函数,如下面的查询所示:

SELECT SqlXslTransform (xCol, 'C:\yukon\xsltransform.xsl')
FROM    T
WHERE  xCol.exist('/book/title/text()[contains(.,"custom")]') =1

查询结果包含已转换的 XML 的行集。

•

SQLCLR 开辟了一个全新的世界,可用于将 XML 数据分解成表或属性提升,并且使用 System.Xml 命名空间中的托管类来查询 XML 数据。更多的信息可以在SQL Server 2005 和 Visual Studio? 2005 在线书籍中找到。

 

 

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

上一篇:PHP使用zlib扩展实现页面GZIP压缩输出
下一篇:构建支持Master/Slave读写分离的数据库操作类
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号