我问问,你B2表中的内容还需要1月的内容么?仅仅是从2月开始?
Ans:你在往A中插入数据库的时候自己要判断一下当前月份,如果是同一个月就把数据分别插入到A和B中。到了下个月之后,继续插入A的原表,但是B中新建一表来插入数据。
还有个疑问就是,你希望用代码实现还是其他?
可以通过sql触发器来实现。
例下列触发器代码 :
create trigger tri_kszb_inserton ygpx_kszb -- *** 作的表名for insert --给表插入一条数据的时候触发asdeclare @kssj datetime declare @sqbh char(40)select @kssj = kssj,@sqbh = sqbh from inserted --把插入的数据的保存到变量insert into ygpx_kszb2 values (@kssj,@sqbh) --同步插入到另一表
有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:
SELECT
FROM msdbdboMSdatatype_mappings
SELECT
FROM msdbdbosysdatatypemappings
来查看SQLServer和其他数据库系统的数据类型对应关系。第一个SQL语句是看SQL转Oracle的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。
SQLServer和Oracle的对应
2建立链接服务器。我们将Oracle系统作为SQLServer的链接服务器加入到SQLServer中。
具体做法参见我以前的文章>
同一服务器的不同数据库间可以直接访问,比如两个数据库DB1,DB2
当前连接的是DB1,可以用 select from db2dbotable1 来访问DB2的表。 其中dbo是数据库所有者,默认为dbo。 还需要连接DB1的用户对两个数据库都有权限。
关于同步,延迟的方法比较单一,做一个存储,加在作业里,定时调用即可。
即时的可以分两种思路,第一可以用触发器的方式,在db1中需要同步的表里,创建触发器,当有数据 *** 作的时候触发,同步数据。
第二种思路,是前台事务 *** 作db1的数据表的时候,同时写db2的数据表,两个 *** 作放在同一个事务中。
两种方法各有好处,个人推荐第一种。
以上思路基于sql server 2005,之后的版本了解不够多,不知道有没有出什么更好的工具啥的。
机器A、B分别新建标准用户repluser,用于访问初始快照共享文件。
机器A新建X_DB数据库,表persion
选择复制菜单->本地发布,右键新建发布,next->选择数据库X_DB
选择发布类型,这里有四种:快照发布、事务发布、可更新订阅的事务发布、合并发布。快照发布和合并发布都是定期取数据,不同的是合并发布可独立更新,可把订阅端的数据更新同步到发布端;测试发现如果两端同时更新,发布端的更新会覆盖掉订阅端的更新。事务发布是事务驱动,只要有更新,立马同步更新。
这里我选择事务同步->next
选择需要复制的表,这里有个限制:只有带主键的表才能复制一路next
设置代理账号,next。最后输入发布名称,发布成功
选择刚才创建的发布,右键属性,选择快照设置共享路径;也可以选择FTP快照进行FTP共享。这样订阅端就访问这个路径读取初始快照。至此发布端设置完成。
机器B订阅端选择复制->本地订阅-》新建订阅。
选择发布服务器,选择x_db下的x_db_publish
没有x_db,可以自己创建数据库。设置分发与订阅账号。
以上就是关于SQL间的两个数据库表的同步更新全部的内容,包括:SQL间的两个数据库表的同步更新、sql server2012高可用性多个数据库之间怎么同步、Oracle与SQL Server如何实现表数据同步等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)