日期:2013-02-01  浏览次数:20341 次

  本文给出了类型化和非类型化XML列各自的优势、将SQL Server 2000数据库迁移到SQL Server2005,新的异常处理如何任务;如果表的架构发生更改,我如何执行操作等,供大家参考!

  SQL Server 2005 包括对Transact-SQL (T-SQL) 言语的几项重要改进。新增功用之一是一种新的触发器,它在数据定义言语 (DDL) 语句运转时激发。在跟踪或保护数据库对象的创建和修正,或对数据库服务器进行更改时,DDL 触发器非常有用。另一个新功用涉及异常处理,该功用因包含TRY/CATCH 块而在异常处理方面向前飞跃了一大步。另一组新功用则以新的XML数据类型为中心,该数据类型在与SQL Server交互的企业使用程序中管理XML数据方面前进了一大部。如今,XML 文档或片段可以存储于 XML 列、绑定到架构、还可以利用 XQuery 语法查询。本文汇总各类问题来做出详细解答。

  问:类型化和非类型化 XML 列各自的优势是什么?

  答:非类型化 XML 列可以存储所有格式规范的 XML 片段或文档,而类型化 XML 列可以绑定到 XML 架构。如果不确定 XML 将遵照哪个架构,则非类型化 XML 很有用。例如,如果您必须使用另一个使用程序的某些 XML,但无法确定数据将遵照哪个 XML 架构,则可以使用非类型化 XML 列来执行这项任务。当然,非类型化 XML 也会带来其他问题。例如,不能针对某个架构编程,因此很难无效地使用 XML。但有时无法避免非类型化 XML。创建非类型化 XML 列非常简单,如下所示:

CREATE TABLE Foo(FooID INT, someXml XML)

  架构不绑定到 XML 列的另一个结果是,SQL Server® 2005 会将非类型化 XML 作为一个字符串存储。这是件好事还是坏事?实际上,既是好事也是坏事。将 XML 作为字符串存储使您可以更灵活地存储任何 XML 片段或文档。依据使用程序的业务规则,您可能需求这种方式。另一方面,将 XML 作为字符串存储意味着,与类型化 XML 相比,既不能无效地存储也不能无效地搜索 XML 数据。并且既不会通知 SQL Server XML 将包含哪些内容,也不会通知它层次结构和 XML 节点的数据类型。但请记住,仅仅由于这些是非类型化 XML 列并不意味着它们可以接受您设计出的任何格式。类型化和非类型化 XML 列仍然只接受格式规范的 XML。