从 SQL Server 2005 中处理 XML
2007-05-13 09:26:22 来源:WEB开发网四、在客户端上使用 XML 架构支持
SQL Server 2005 支持强类型化的 XML,这意味着 XML 必须符合某个 XML 架构或 XML 架构集。通过使用 SQL Server 中的架构集合可以实现这种支持。XML 架构集合如同任何其他 SQL Server 对象一样定义,XML 架构存储在 SQL Server 中。T-SQL DDL CREATE 语句和 XML 架构集合的用法如下所示:
CREATE XML SCHEMA COLLECTION books_xsd
AS
-- one or more XML schemas here
GO
CREATE TABLE typed_xml (
id INT IDENTITY PRIMARY KEY,
-- require books_col content to be schema-valid
books_col XML(books_xsd)
)
-- validated here
INSERT typed_xml VALUES('<!-- some document -->')
-- validated here too
UPDATE typed_xml
SET books_col.modify('<!-- some XQuery DML -->')
WHERE id = 1
当您从客户端使用 SQL Server 2005 中强类型化的 XML 数据时,验证是在服务器上执行,而非在客户端上执行。例如,如果您使用前述示例中显示的 AddARow 方法向 typed_xml 表添加一行,则在验证发生之前,数据跨网络发送到 SQL Server。然而,只需少量工作,就可以从SQL Server XML SCHEMA COLLECTIONs 检索 XML 架构,并将它们隐藏在客户端上以完成客户端的验证。这可以防止用户或 Web 服务将架构无效的 XML 发送到用于 SQL Server 存储的客户端,从而节省了一些反复的操作,但是,必须考虑两处警告/澄清。首先,依赖于从 SQL Server 所获取的 XML 架构信息如同依赖于任何高速缓存的客户端元数据。可能某人已使用 T-SQL ALTER XML SCHEMA 语句改变了架构集合,或者甚至删除了架构集合并重新创建它,从而使得您的客户端的检查无用。您可以在 CREATE/ALTER/DROP XML SCHEMA DDL 语句上使用新的 EVENT NOTIFICATION,以防止出现异常。然后,您将使用自定义代码监视 Service Broker SERVICE,这类似于使用带有查询通知的 SqlNotificationRequest。EVENT NOTIFICATIONs 是 SQL Server 2005 中的新功能,但它类似于在我前面的文章 ADO.NET 2.0 中的查询通知中讨论的查询通知。第二,请记住,即使您在客户端执行 XML 架构验证,SQL Server 也将在服务器上重新检查。没有办法向 SQL Server 指示“我知道这个 SQL Server 架构类型化的 XML 实例的架构有效,请不要麻烦地自己检查了。”
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接