跨数据库事务保存以及服务器的配置

来源:互联网 发布:做决定的软件 编辑:程序博客网 时间:2024/05/16 13:59

1.      添加链接服务器(在本地服务器通过link添加远程服务器)

EXEC sp_droplinkedsrvlogin RemoteServerLink,Null --删除映射(录与链接服务器上远程登录之间的映射) 
EXEC sp_dropserver RemoteServerLink--删除远程服务器链接 
EXEC  sp_addlinkedserver 
      @server='RemoteServerLink',--被访问的服务器别名  
      @srvproduct='', 
      @provider='SQLOLEDB', 
      @datasrc='192.168.10.1'   --要访问的服务器 
EXEC sp_addlinkedsrvlogin  
     'RemoteServerLink', --被访问的服务器别名 
     'false',  
     NULL,  
     'sa', --帐号 
     '123456' --密码

2.      在事务开始前加入set xact_abort ON语句

对于大多数 OLE DB 提供程序(包括 SQL Server),必须将隐式或显示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是在提供程序支持嵌套事务时。
如:
SET   XACT_ABORT on  
BEGIN DISTRIBUTED TRANSACTION
inserte into ....................
COMMIT TRAN

 

3.        MSDTC设置
打开“管理工具――组件服务”,以此打开“组件服务――计算机”,在“我的电脑”上点击右键。在MSDTC选项卡中,点击“安全配置”按钮。
在安全配置窗口中做如下设置:
l         选中“网络DTC访问”
l         在客户端管理中选中“允许远程客户端”“允许远程管理”
l         在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
          选中启用XA事务
l         保证DTC登陆账户为:NT   Authority\NetworkService


4.       远程服务器上的名称解析

分布式事务的参与服务器是需要相互访问的,发起查询的服务器要根据机器名或ip查找远程服务器的,同样远程服务器也要查找发起服务器,远程服务器通过发起服务器的机器名查找服务器,所以要保证远程服务器能够通过发起服务器的机器名访问到发起服务器。
一般的,两个服务器在同一网段机器名能就行很好的解析,但是也不保证都能很好的解析,所以比较保险的做法是:
在远程服务器的在“C:\WINDOWS\system32\drivers\etc\hosts”文件中增加一条记录:
xxx.xxx.xxx.xxx   发起服务器名

 

原创粉丝点击