我在sqlServer中有张表,需要在更新的时候同步到其他数据库中
(不同操作系统 不同数据库服务)目标数据库使用的是mysql.
需要将添加到sqlserver中那张表的记录,修改后存放到mysql中?
使用数据库本身的功能,这个如何操作?应该是触发器,是否需要odbc?请高手帮忙
贴出详细触发器代码 谢谢
(不同操作系统 不同数据库服务)目标数据库使用的是mysql.
需要将添加到sqlserver中那张表的记录,修改后存放到mysql中?
使用数据库本身的功能,这个如何操作?应该是触发器,是否需要odbc?请高手帮忙
贴出详细触发器代码 谢谢
1、在sql server中创建存储过程,存储过程可以调用com组件(sql server在线帮助中有例子),直接调用mysql的ado驱动就可以
2、使用vc++创建扩展存储过程,在c++代码中调用ado
3、在触发器中调用存储过程
办法二:
1、在数据库中建张表A,使用触发器跟踪数据变化,并把变化写入表A
2、写一段代码,定期(比如5秒,看你的时间要求)监控表A,发现有数据,则同步数据到其他数据库
2种方法
一是通过建立link的方法
sp_addlinkedserver 'ntest-link名', 'MySQL', 'MSDASQL--支持的链接方式', 'mytest-dsn名'
GO
sp_addlinkedsrvlogin 'ntest-link名','false', 'sa-sqlserver用户','mythzz-sqlserver密码'
具体可以参考 帮助文档
select * from ntest..pdns.tt
但是我式了 提示拒绝用户需要密码
Driver]Access denied for user
等空了在搞下
第二种方法是直接用
OPENROWSET与OPENQUERY(具体可以查sql帮助文档)开启数据库选项SP_CONFIGURE 'show advanced options',1 GO RECONFIGURE GO -- 为开启为关闭 SP_CONFIGURE 'Ad Hoc Distributed Queries',1 GO RECONFIGURE GO SP_CONFIGURE 'show advanced options',0 GO RECONFIGURESELECT *
FROM OPENROWSET('MSDASQL','mytest';'root';'mythzz',
'SELECT * FROM pdns.tt') 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/fredrickhu/archive/2009/09/21/4576036.aspx
触发器代码里面你只处理受到影响的行
触发器可以访问deleted等特殊表,保存了收到影响的行
select TypeID,NewsTitle,Author,Souce,SendTime,content into #T_ONews from OPENDATASOURCE('SQLOLEDB','server=xxx.xxx.xxx.xxx;User ID=sa;Password=xxx').NanJingNews.dbo.T_ONews
where id > @l_BeginInt
and id <= @l_EndInt
order by id desc
感谢了