技术开发 频道

SQL Server 2005中的新XML功能


3.1 类型化和非类型化XML列

    为更好的结构化或者验证XML数据,SQL Server可将架构与特定XML列关联起来。这种列称为类型化XML列。如果XML架构与XML列关联,那么在将XML数据插入字段时,架构会验证XML数据。SQL Server 2005支持在架构集合中分组的多个架构,这样可以将不用的架构应用到XML列。服务器将根据架构对输入XML进行验证。如果XML对于集合的所有架构都有效,那么该XML数据将存储在XML字段中。下表总结了类型化XML列和非类型化XML列的不同点。



    除了类型化XML列,开发人员还可以针对类型化或者非类型化XML数据类型列使用关系型约束(列或者行)。

3.2 非类型化XML列

    当不需要优先使用架构时,非类型化XML则变得很有用,那么也就不需要使用基于映射的解决方案了。当已经获取架构,但是映射的关系型数据模型非常复杂,难于维护,或者已经存在多个架构,同时没有绑定根据外部需要绑定数据时,非类型化XML也是很有用的。以下语句在AdventureWorks数据库中创建了表Customer,该表主键是整数类型的ID列,同时具有一个非类型化XML列XmlData:
Use AdventureWorks
CREATE TABLE Customer(ID int primary key, XmlData xml)
    在AdventureWorks数据库中创建的Customer表将在本文中使用。为了在上表中插入值,可使用以下T-SQL语句:
INSERT INTO Customer values(2, '<customer id="2"><name>Joe</name></customer>')
    注意,开发人员还可创建包括多个XML或者关系型列的表,该表可有主键,也可没有主键。

3.3 类型化XML列

    如果在XML架构集合中包括描述XML数据的XML架构,那么可以将该XML架构集合与XML列关联起来,以便生成类型化XML。XML架构用于验证数据,在查询编译和数据修改过程中实现比非类型化XML更加精准的类型检测,以及优化存储和查询过程。

    正如前文所述,使用SQL Server中的XML架构集合能够支持类型化XML列。XML架构对象与其他SQL Server对象的定义类似,它们都存储在SQL Server中。使用T-SQL语句CREATE XML SCHEMA COLLECTION,同时提供一个或者多个XML架构能够创建一个XML架构集合。可以将多个XML架构组件添加到现有的XML架构中,同时使用ALTER XML SCHEMA COLLECTION语句还可以将多个架构添加到XML架构集合中。使用SQL Server 2005的安全模型能够如同保护其他SQL对象那样保护XML架构集合。T-SQL语句语法是DDL CREATE XML SCHEMA COLLECTION:

CREATE XML SCHEMA COLLECTION <Schema_Name> 
AS
-- 此处设置架构内容
GO
0
相关文章