WEB开发网
开发学院数据库MSSQL Server SQL Server 2005上的CLR和ADO.NET 2.0 阅读

SQL Server 2005上的CLR和ADO.NET 2.0

 2007-05-15 09:28:44 来源:WEB开发网   
核心提示: 不会影响到系统构架的新特性如下:(1)新的数据类型,包括XML数据;(2)支持Snapshot级的事务隔离级别;(3) 支持系统快速高可用功能的Mirroring;但是,SQL Server 2005上的CLR和ADO.NET 2.0(5),下面一些功能将会影响到您的系统架

不会影响到系统构架的新特性如下:

(1)新的数据类型,包括XML数据;

(2)支持Snapshot级的事务隔离级别;

(3) 支持系统快速高可用功能的Mirroring;

但是,下面一些功能将会影响到您的系统架构:

(1)一步的SQL Server访问

(2)MARS (Multiple Active Result Set),不仅可以让您复用与数据库的连接,而且还可以在源数据更新的时候,主动根据SQL Server触发更新。

事务的控制上,ADO.NET 2.0可以借助SQL Server自己的事务机制或者System.Transactions的支持,可以用非常简单的方式使用本地或者分布式事务。如果你的数据操作仅仅限于当前一个固定的SQL Server,那么笔者建议您采用Promotion的轻量级交易机制。你所要做的就是在SqlConnection的ConnectionString属性定义时增加一个Enlist关键字即可,这样当你的ADO.NET访问涉及DML操作时,CLR会自动为您增加一个事务,保证操作的原子性。但如果你的操作不仅仅限于当前SQL Server,还要访问其他异构数据库或者队列之类的其他对象,那么您需要分布式事务的支持,这时候您需要在DTC的调度下,同时使用SQL Server 2005本地事务、System.Transactions和System.Data.SqlClient三者,把整个处理包装到一个代价比较昂贵的分布式交易中。总而言之,到底要使用那种事务处理,要看您的应用需要。

笔者要提醒您注意的是,在CLR的托管代码支持下,SQL Server 2005采用CLR 事务和T-SQL的事务有很大的区别:

CLR中定义的包括事务的处理内容必须被ROLLBACK或者COMMIT,除非SQL Server在处理内容没有执行结束之前出现严重错误,导致内容不能执行结束。

(1)出现事务嵌套时,内部事务不可以ROLLBACK或者COMMIT外部的事务。

(2)不要试图提交非本Function或者Procedure的事务,这样会导致Run-Time Error。

(3) 试图回退非本Function或者Procedure的事务时,会导致事务执行挂起,借助该特性可以用来调试事务内部的内容。

XML的串行化支持

SQL Server 2000仅仅提供了有限的HTTP直接访问支持,但是在引入了CLR 集成后,Internet / Intranet应用可以借助于XML串行化,直接以XML方式访问系统的用户自定义类型数据,尤其对于给予HTTP访问BLOB对象的时候也可以支持,此外可以在SQL Server内部通过该特性访问Web Service。

上一页  1 2 3 4 5 

Tags:SQL Server CLR

编辑录入:coldstar [复制链接] [打 印]
赞助商链接