我在sqlServer中有张表,需要在更新的时候同步到其他数据库中
(不同操作系统 不同数据库服务)目标数据库使用的是mysql.
需要将添加到sqlserver中那张表的记录,修改后存放到mysql中?
使用数据库本身的功能,这个如何操作?应该是触发器,是否需要odbc?请高手帮忙 
贴出详细触发器代码 谢谢

解决方案 »

  1.   

    办法一:
    1、在sql server中创建存储过程,存储过程可以调用com组件(sql server在线帮助中有例子),直接调用mysql的ado驱动就可以
    2、使用vc++创建扩展存储过程,在c++代码中调用ado
    3、在触发器中调用存储过程
    办法二:
    1、在数据库中建张表A,使用触发器跟踪数据变化,并把变化写入表A
    2、写一段代码,定期(比如5秒,看你的时间要求)监控表A,发现有数据,则同步数据到其他数据库
      

  2.   

    sqlserver2005远程连接 mysql 
    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
      

  3.   

    触发器更新太频繁,我想知道定时更新数据库的时候,是怎么判断哪些数据是需要同步的。我现在只想到用作业定时调用存储过程,但是怎么判断哪些更新数据要同步过去。我有个同事在要同步的表上建两个字段,updatetime,postedtime.意思如果同步时间小于更新时间,就要同步,其实也是行的。只是想知道数据库里有没有方法判断
      

  4.   

    你可以使用触发器,结合dblink的模式.
    触发器代码里面你只处理受到影响的行
    触发器可以访问deleted等特殊表,保存了收到影响的行
      

  5.   

    连接另一个mssql我清楚:select @l_EndInt = max(id)  from OPENDATASOURCE('SQLOLEDB','server=xxx.xxx.xxx.xxx;User ID=sa;Password=xxx').NanJingNews.dbo.T_ONews
    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 
      

  6.   

    可是连接mysql 我就不清楚了 大家能给个例子么 如上面的写法
    感谢了