首页 新闻 搜索 专区 学院

mssql分布式事务的相关疑问

0
悬赏园豆:100 [已解决问题] 解决于 2009-07-28 09:49

  最近在做数据库事务的时候,有些疑问,想在这里请教下各位,

  (1),同一个数据库实例中两个不同的库之间的事务

  (2),多个不同实例(不同的服务器)之间使用分布式事务

第一种情况,我目前想到的解决办法是

    a. 创建一个数据库连接,然后用 "库名..表名"访问另外一个库中的表,这样来做事务的操作!

    b.创建两上针对不同的连接的事务,然后分别执行,统一提交和回滚!

    c.使用分布式事务(DTC),这个没有具体设置和使用过

我想问的问题是,我(a)中的方案是否可行,使用use 或 库名..表名来访问另一个数据库?

b方案和c方案哪个效率更高,可靠性更好!大家一般在处理(同一个实例不同库之间的事务)及(不同服务器之间下的分布式事务)的。希望尽可能详细点!谢谢!

    

  

问题补充: 我还想问一下,ADO.net里有个TransactionScope隐式事务类,msdn上说该类"会在通过 new 语句实例化 TransactionScope 时,事务管理器将确定要参与哪个事务。一经确定,此范围将始终参与该事务。此决策基于两个因素:是否存在环境事务以及构造函数中 TransactionScopeOption 参数的值。“这里说自已会决策使用的事务,我看使用这个类时,没有传递任何参数给该类,如果代码块里有两个以上的数据库,它怎么做决策!它和显示的Transaction在本质上有什么区别,性能上有什么区别!?
chen eric的主页 chen eric | 初学一级 | 园豆:4
提问于:2009-07-23 16:54
< >
分享
最佳答案
0

第一种情况:

A 方案: 没什么问题,不过特殊情况下需要开启Guest用户,以便及时更换连接,切换连接需要特别注意;

B,C根据需要,根据你需求的复杂度,B方式没用过,个人认为C更好点,DTC对权限的要求要高点。

第二种情况:不同服务器间需要用 链接服务器EXEC sp_addlinkedserver ),这时候要注意名称解析等问题。

winzheng | 大侠五级 |园豆:8797 | 2009-07-23 21:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册