SqlServer2008 跨服务器同步数据

最近工作中需要跨服务器同步数据,在数据库DB1中的表T1插入数据,同时触发T1的触发器(这里暂不讨论触发器的效率问题),向另一台服务器DB2中的相同的一张表T2插入数据,查看了一些资料说,

需要打开DTC(分布式交易协调器)协调跨多个数据库、消息队列、文件系统等资源管理器的事务,

于是按照网上说的,将自己的DTC打开启动,步骤如下:

DTC位置:控制面板--管理工具--服务--Distributed Transaction Coordinator

然后在本机SqlServer里新建一个触发器测试了一下,提示“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”

出现这个问题的原因是对方电脑没有配置好DTC,所以需要将另一台服务器也做如下配置:

两台服务器电脑做如下配置(windows2003系统):

2. 单击“添加/删除 Windows 组件”。 
3. 选择“应用程序服务器”,然后单击“详细信息”。 
4. 选择“启用网络 DTC 访问”,然后单击“确定”。 
5. 单击“下一步”;单击“完成”。 
6. 在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"。
7. 右键“我的电脑”->“属性”,在MSDTC选项卡中,点击“安全配置”按钮。
8. 在安全配置窗口中做如下设置:
(1)选中“网络DTC访问”
(2)在客户端管理中选中“允许远程客户端”“允许远程管理”
(3)在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
(4)保证DTC登陆账户为:NT Authority\NetworkService 
(5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。 
   所有的依赖服务将被停止。请按‘是‘继续"。单击"是"继续。

我当时先拿同事的电脑做了下测试,同事的系统是Win7,按上面的步骤没有找到“应用程序服务器”,需要按下面的方法操作:

Vista, Windows 7,Windows Server 2008 MSDTC配置  
1. 打开“控制面板(Control Panel)―管理工具(Administrative Tools)―组件服务(Component 
Service)”(或者开始-运行 “Dcomcnfg.exe”)

2. 打开“组件服务(Component Service)―计算机(Computers)”

3. 在“我的电脑(My Computer)”上点击右键,点击“属性(Properties)”

4. 在Local DTC Properties对话框中,点击“安全(Security)”选项卡。      在安全配置选项卡中做如下设置:

选中“网络DTC访问(Network DTC Access)”  ? 在客户端管理(Client and Administration)中选中“允许远程客户端(Allow remote Clients)”
和“允许远程管理(Allow Remote Administration)”  
在事务管理通讯(Transaction Manager Communication)中选“允许入站(Allow 
Inbound)”“允许出站(Allow Outbound)”“不要求进行验证(No Authentication Required)”  
保证DTC登陆账户为:NT Authority\Network Service

再次测试出现提示:“其他会话正在使用事务的上下文”,这是因为对方服务器表中也有触发器,需要进行一下判断。

下面给出测试的例子:

--创建测试表
CREATE TABLE [dbo].[TB1](
    [id] [int] NULL,
    [age] [money] NULL
) ON [PRIMARY]

GO

--创建链接服务器
exec sp_addlinkedserver   ‘it38 ‘, ‘ ‘, ‘SQLOLEDB ‘, ‘172.16.3.38‘ --对方服务器地址
exec sp_addlinkedsrvlogin  ‘it38 ‘, ‘false ‘,null, ‘sa‘, ‘sa‘ --对方服务器用户名密码
--删除创建的链接服务器时使用
--exec sp_dropserver  ‘it38 ‘, ‘droplogins ‘
--为表testTB2创建触发器
CREATE TRIGGER [dbo].[tr_qiao] on [dbo].[TB1]
FOR INSERT
AS
BEGIN
  SET NOCOUNT ON
  SET XACT_ABORT ON
 INSERT INTO it38.hlldb.dbo.t(id,age)
  SELECT id, age FROM inserted;
END
GO

--***********************************************--查询对方数据库表数据SELECT * FROM it38.[数据库名].[dbo].[TB1]
--插入一条数据测试
INSERT INTO TB1(id,age) values(5,55);
时间: 2024-11-04 11:02:26

SqlServer2008 跨服务器同步数据的相关文章

跨服务器 同步数据

exec sp_addlinkedserver  'srv_new','','SQLOLEDB','ip地址 'exec sp_addlinkedsrvlogin 'srv_new','false',null,'账户','密码'go BEGIN TRY    BEGIN TRANSACTION tra        TRUNCATE TABLE dbo.AccountInfo;        SET IDENTITY_INSERT dbo.AccountInfo ON        INSERT

跨服务器修改数据

说明: 两个服务器: 192.168.0.22   A 192.168.0.3     B 数据库备份在A上 数据库在B上 在A上写: exec sp_addlinkedserver   'ITSV2', ' ', 'SQLOLEDB', '服务器地址' exec sp_addlinkedsrvlogin  'ITSV2', 'false',null, '用户名', '密码' --SQL语句 insert into BookDB.dbo.T_ID(id)select  FenJian_ID fr

第四章 从远程rsync服务器同步数据

第四章 从远程rsync服务器同步数据 使用rsync从远程rsync服务器同步数据 第一节 rsync配置 拉:          rsync        选项         用户名@备份源服务器IP::共享模块名  目标目录 推:         rsync        选项         备份源目录   用户名@目标服务器IP::共享模块名 C/S模式: 服务端==>    远程服务器为:DataServer.  IP地址为:192.168.88.8 客户端==>    备份服务

跨服务器导入数据SQL语句及其问题解决方案

--跨服务器导入数据SQL语句: insert into [shsw_manager].[dbo].[Station_List]select * from OPENROWSET('SQLOLEDB','SERVER=31.16.1.130;uid=sa;pwd=shswhotline;Database=shsw_manager','select * from Station_List') --跨服务器查询示例 SELECT * FROM OPENROWSET('SQLOLEDB','192.16

架设rsync服务器同步数据

什么是rsync rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用.本文主要讲述的是如何自架rsync服 务器,以实现文件传输.备份和镜像.相对tar和wget来说,rsync 也有其自身的优点,比如速度快.安全.高效. rsync的安装 在CentOS服务器,我们可以执行以下命令安装 yum install rsync 对于debian.ubuntu服务器,则是以下命令 sudo apt-get install rsync

windchill系统——eclipse与服务器同步数据操作

步骤如下 windchill系统--eclipse与服务器同步数据操作 原文地址:https://www.cnblogs.com/xiaostudy/p/9287180.html

SQL Server 跨库同步数据

最近有个需求是要跨库进行数据同步,两个数据库分布在两台物理计算机上,自动定期同步可以通过SQL Server代理作业来实现,但是前提是需要编写一个存储过程来实现同步逻辑处理.这里的存储过程用的不是opendatasource,而是用的链接服务器来实现的.存储过程创建在IP1:192.168.0.3服务器上,需要将视图v_custom的客户信息同步到IP2:192.168.0.10服务器上的t_custom表中.逻辑是如果不存在则插入,存在则更新字段. 1 create PROCEDURE [db

sql serve 跨服务器查询数据方法

 今天在做sql server 的数据查询时,需要用到跨服务器连接,在这里记录一下,如何在sql server 中,使用跨服务器查询的方法,有以下步骤. /* 创建中间数据库链接 exec sp_addlinkedserver 'MiddleData', ' ', 'SQLOLEDB', '数据库连接实例,或者IP' exec sp_addlinkedsrvlogin 'MiddleData', 'false',null, '数据库连接帐号', '数据库连接密码' */ 创建好连接之后,就可

mysql定时任务按天建表并跨库同步数据

创建定时任务完成:创建ASR识别记录表,每天自动从小云AI对话详情表同步数据.*/DROP PROCEDURE IF EXISTS `create_o_asr_record_call`;DELIMITER ;;CREATE PROCEDURE `create_o_asr_record_call`(IN `dayInt` bigint,out result int) COMMENT 'ASR识别结果表--按日--建表'BEGIN set @sql_tmp3 = CONCAT('create tab