SQL Server 2005上的CLR和ADO.NET 2.0
2007-05-15 09:28:44 来源:WEB开发网不会影响到系统构架的新特性如下:
(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。
- ››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表' (数...
更多精彩
赞助商链接