通过触发器实现数据库的即时同步

简介:
None.gif -- -即时同步两个表的实例:
None.gif--
测试环境:SQL2000,远程主机名:xz,用户名:sa,密码:无,数据库名:test
None.gif

None.gif -- 创建测试表,不能用标识列做主键,因为不能进行正常更新
None.gif--
在本机上创建测试表,远程主机上也要做同样的建表操作,只是不写触发器
None.gif
if exists ( select * from dbo.sysobjects where id = object_id(N ' [test] ') and OBJECTPROPERTY(id, N ' IsUserTable ') = 1)
None.gif drop table [ test ]
None.gif
None.gif create table test(id int not null constraint PK_test primary key
None.gif ,name varchar( 10))
None.gif go
None.gif
None.gif -- 创建同步的触发器
None.gif
create trigger t_test on test
None.gif for insert, update, delete
None.gif as
None.gif set XACT_ABORT on
None.gif -- 启动远程服务器的MSDTC服务
None.gif
exec master..xp_cmdshell ' isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell '' net start msdtc '' ,no_output" ',no_output
None.gif
None.gif -- 启动本机的MSDTC服务
None.gif
exec master..xp_cmdshell ' net start msdtc ',no_output
None.gif
None.gif -- 进行分布事务处理,如果表用标识列做主键,用下面的方法
None.gif
BEGIN DISTRIBUTED TRANSACTION
None.gif delete from openrowset( ' sqloledb ', ' xz '; ' sa '; '',test.dbo.test)
None.gif where id in( select id from deleted)
None.gif insert into openrowset( ' sqloledb ', ' xz '; ' sa '; '',test.dbo.test)
None.gif select * from inserted
None.gif commit tran
None.gif go
None.gif
None.gif -- 插入数据测试
None.gif
insert into test
None.gif select 1, ' aa '
None.gif union all select 2, ' bb '
None.gif union all select 3, ' c '
None.gif union all select 4, ' dd '
None.gif union all select 5, ' ab '
None.gif union all select 6, ' bc '
None.gif union all select 7, ' ddd '
None.gif
None.gif -- 删除数据测试
None.gif
delete from test where id in( 1, 4, 6)
None.gif
None.gif -- 更新数据测试
None.gif
update test set name =name + ' _123 ' where id in( 3, 5)
None.gif
None.gif -- 显示测试的结果
None.gif
select * from test a full join
None.gif openrowset( ' sqloledb ', ' xz '; ' sa '; '',test.dbo.test) b on a.id =b.id



本文转自高海东博客园博客,原文链接http://www.cnblogs.com/ghd258/archive/2005/10/24/260783.html,如需转载请自行联系原作者
相关文章
|
2月前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
10天前
|
DataWorks 关系型数据库 调度
DataWorks操作报错合集之DataWorks 数据库同步任务中,如果遇到表情符报错的现象,怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
20 0
|
10天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
29 0
|
11天前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之DataWorks目前支持ES数据库的分表同步如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
32 1
|
3天前
|
NoSQL 关系型数据库 数据库
数据库同步 Elasticsearch 后数据不一致,怎么办?
数据库同步 Elasticsearch 后数据不一致,怎么办?
9 0
|
11天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 0
|
11天前
|
分布式计算 关系型数据库 大数据
MaxCompute产品使用合集之怎么才可以将 PostgreSQL 中的 geometry 空间类型字段同步到 MaxCompute 或另一个 PostgreSQL 数据库
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
2月前
|
存储 SQL 关系型数据库
【MySQL 数据库】10、MySQL 的触发器
【MySQL 数据库】10、MySQL 的触发器
23 0
|
4月前
|
关系型数据库 MySQL 数据库
使用Flink同步MySQL到doris数据库中,时间格式异常
当我完成同步时,我发现Doris数据库中的所有时间格式都变为了如此:1970-02-01 11:00:00.000000,在所有时间格式后面追加了一个点和6个零,这是怎样造成的,该如何解决这个问题