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

再次测试出现提示:“其他会话正在使用事务的上下文”,这是因为对方服务器表中也有触发器,需要进行一下判断。
********************************当两台服务器不在一个网段的时候,还有可能出现一个问题*******************************
如果两台服务器在一个网段的时候,按上面的设置,基本就可以搞定了,但是当两台服务器不在一个网段的时候,SQLServer还有可能报下面的错误:
链接服务的OLE DB 访问接“SQLNCLI10”返回了消息“该事务管理已经禁止了它对远程事务的支持”
然后我对要请求访问的服务器A做了以下操作,修改A服务器的host文件,增加B的IP地址和服务器名,然后问题就解决了。
下面给出测试的例子:
--创建测试表
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 '
--为表TB1创建触发器
CREATE TRIGGER [dbo].[tr_qiao] on [dbo].[TB1]
FOR INSERT
AS
BEGIN
SET NOCOUNT ON
SET XACT_ABORT ON
INSERT INTO it38.[数据库名].dbo.TB1(id,age)
SELECT id, age FROM inserted;
END
GO --***********************************************
--查询对方数据库表数据
SELECT * FROM it38.[数据库名].[dbo].[TB1]
--插入一条数据测试
INSERT INTO TB1(id,age) values(5,55);
SqlServer2008 跨服务器同步数据的更多相关文章
- JOB+MERGE 跨服务器同步数据
为了解决单服务器压力,将库分服务器部署,但是原来用触发器实现的表数据同步就实现不了了. 因为总监老大不允许 开启分布式事务(MSDTC),我又不想为了一个几千行的基础数据做复制订阅. 于是乎决定用 J ...
- 跨服务器导入数据SQL语句及其问题解决方案
--跨服务器导入数据SQL语句: insert into [shsw_manager].[dbo].[Station_List]select * from OPENROWSET('SQLOLEDB', ...
- 架设rsync服务器同步数据
什么是rsync rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用.本文主要讲述的是如何自架rsync服 务器,以实现文件传输.备 ...
- SQL Server 跨库同步数据
最近有个需求是要跨库进行数据同步,两个数据库分布在两台物理计算机上,自动定期同步可以通过SQL Server代理作业来实现,但是前提是需要编写一个存储过程来实现同步逻辑处理.这里的存储过程用的不是op ...
- sql 跨服务器查询数据
方法一:用OPENDATASOURCE [SQL SERVER] 跨服务器查询 --1 打开 reconfigure reconfigure SELECT * FROM OPENDATASOURCE( ...
- MySQL 同一台服务器同步数据
声明:我配置出来的slave_io_running和slave_sql_running都是yes.但是数据并没有同步! 希望有遇到相同问题的朋友,能够告诉我一下解决方案? 首先,如何在同一个服务器安装 ...
- SQL Server 跨服务器快速数据转移
最近遇到一个问题,要将 a 服务器上的 A 库,迁移到 b 服务器上的 B 库,两个库的数据结构是一样的,但是数据库版本是 a 比 b 高,通过 sqlserver 还原这条路是走不通了,那难道除了 ...
- sqlserver 跨服务器访问数据
需求:两个一模一样的表,分别分布在两个服务器的数据库上,现在要在一个表中,查看这两个表的内容,并让Id排序 1:在本地数据库查询分析器中,运行以下两段语句: --创建链接服务器 exec sp_add ...
- 跨服务器修改数据 分类: SQL Server 2014-08-21 21:24 316人阅读 评论(0) 收藏
说明: 两个服务器: 192.168.0.22 A 192.168.0.3 B 数据库备份在A上 数据库在B上 在A上写: exec sp_addlinkedserver 'ITSV ...
随机推荐
- 安装jdk1.8.0_11环境脚本
安装jdk1.8.0_11的脚本,具体的版本可在脚本中调整,发现最后的重置环境变量没生效,还得再终端界面source /etc/profile [root@ZFVM-APP-- ~]# vim jdk ...
- 修改ssh连上默认目录
vi /etc/passwd ssh连接linux服务器只显示-bash-4.1#不显示路径时,我们只需要修改 ~/.bash_profile文件,如果不存在这个文件,那么新建一个,增加内容 ex ...
- ORACLE EXECUTE IMMEDIATE 小结
EXECUTE IMMEDIATE 代替了以前Oracle8i中DBMS_SQL package包.它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,E ...
- Python: 根据利润计算奖金
简述:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 20万到40 ...
- 自己动手写Android插件化框架
自己动手写Android插件化框架 转 http://www.imooc.com/article/details/id/252238 最近在工作中接触到了Android插件内的开发,发现自己这种技 ...
- MySQL ALTER命令-修改数据表名或者修改数据表字段
需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令. 删除,添加或修改表字段 如下命令使用了 ALTER 命令及 DROP 子句来删除表的 i 字段: ALTER TABLE ...
- 新西兰程序员 ASP.NET网站中设置404自定义错误页面
新西兰程序员 ASP.NET网站中设置404自定义错误页面 在用ASP.NET WebForm开发一个网站时,需要自定义404错误页面. 做法是这样的 在网站根目录下建立了一个404.html的错误页 ...
- SqlServer视图介绍以及创建方式
1.,视图的介绍: (ps:学sqlServer视图是在面试问到之后学的,答不上来太low了,然后就去各种搜索操作对视图也有了自己的理解) 其实视图就是一张表,是一张表中或者多张表中经过某种筛选后显示 ...
- Qt编写自定义控件31-面板仪表盘控件
一.前言 在Qt自定义控件中,仪表盘控件是数量最多的,写仪表盘都写到快要吐血,可能是因为各种工业控制领域用的比较多吧,而且仪表盘又是比较生动直观的,这次看到百度的echart中有这个控件,所以也来模仿 ...
- [Scikit-learn] 1.5 Generalized Linear Models - SGD for Classification
NB: 因为softmax,NN看上去是分类,其实是拟合(回归),拟合最大似然. 多分类参见:[Scikit-learn] 1.1 Generalized Linear Models - Logist ...