none
异地两台SQL服务器之间如何实现数据同步,主要是建立服务器连接出错 RRS feed

  • 问题

  • windows7 x64 sp1

    sql server 2008/2005 补丁最新

    异地win xp sp3(x86)

    sqlserver2005Express

    实验数据时sqlserver2008R2中一个表设置触发器更新到另一台服务器的sqlserver2005。报错为消息 7403,级别 16,状态 1,过程 Cluster_trigger,第 8 行
    尚未注册 OLE DB 访问接口 "xxx.xxx.xx.xxx"。

    我在网上查了一些资料。基本上有这么几种说法,一种是做access的。一种是导入导出excel的。还有一种是说跟databaseengine有关的。最后一个说法是说跟64位数据库有关。

    --以下为原始数据
    --删除服务器链接命令,注意先删除登录镜像.目标服务器,密码的方式,无初始密码默认为null
    exec sp_droplinkedsrvlogin 'target_server',null
    exec sp_dropserver 'target_server'

    --创建服务器连接
    exec sp_addlinkedserver 'target_server','ODBC','166.111.89.226'  

    --创建远程登录
    exec sp_addlinkedsrvlogin 'target_server','false',null,'sa',NULL

    --指定数据库,dbname改换为本地当前数据库name
    use dbname
    go  

    --修改后的跨服务器触发器
    create Trigger Cluster_trigger on T_Balance
    for insert,update   
    as  
    begin  
      set xact_abort on  
      update t set Title=i.Title,Weight=i.Weight,Time=i.Time,ImagePath=i.ImagePath,Precison=i.Precison  
      from target_server.gsafety.dbo.T_Balance t,inserted i
      where t.ID=i.ID
    end
    go
    1、access说法的,这里oledb是通用数据接口,我不明白跟微软自己的office组件access有什么直接关系。
    2、Excel说法的直接跟我这里情况没有交集
    3、database engine我在配置管理器里面已经把服务打开了。系统服务里面的msdtc也打开了,包括相应的135端口。
    4、64位系统这个我还没看懂,说是在一个地方把any cpu改成x86.我没有找到这个地方。
    还请这里的高人指教。请您就这里面的深入机制和原理做出解答或者讨论。而不要从网上浮躁的复制粘贴。搜索引擎我也会用一点。不需要重复的无意义劳动。

    说在最后:我在网上搜索了几天这个问题。老实说这个问题全是无疾而终。希望微软官方能重视起来。就这个问题给出一个统一的答案。


    2012年3月16日 1:05

答案

全部回复

  • Why create linked server for odbc (provider is wrong by the way)? Try with sql native client instead.
    • 已编辑 rmiao 2012年3月16日 3:43
    2012年3月16日 3:37
  • 别乱查什么资料了,仔细看联机丛书。

    另外,默认情况下,SQL Server 2005 Express Edition 不允许远程连接。


    想不想时已是想,不如不想都不想。

    2012年3月16日 4:23
    版主
  • 异地,即使是专线,性能<网络往返时间>上也是个问题……若不是特别要实时更新,建议定期同步

    Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com

    2012年3月16日 7:59
  • Why create linked server for odbc (provider is wrong by the way)? Try with sql native client instead.
    不好意思,odbc是后面几次修改后的方式。刚开始是SQLOLEDB。这个我改过好几次了。
    2012年3月16日 9:17
  • Why create linked server for odbc (provider is wrong by the way)? Try with sql native client instead.

    不好意思,odbc是后面几次修改后的方式。刚开始是SQLOLEDB。这个我改过好几次了。

    odbc和sqloledb都不对。微软站点说得清清楚楚的,仔细看看。

    http://msdn.microsoft.com/zh-cn/library/ms190479(v=sql.90).aspx

    另外,默认情况下,SQL Server 2005 Express Edition 不允许远程连接。


    想不想时已是想,不如不想都不想。

    2012年3月16日 12:20
    版主
  • 我也做了这么一个,通过数据库分发,建立分发服务器和订阅服务器来做的,用事务的方式!

    但是有个缺点,只能用固定IP才得行,而且只能用主机名,所以要在两边添加相应的映射才得行!

    不知道哪位知道还能用其他的方式来做!

    2012年3月17日 8:59
  • Sql server should have static ip address.
    2012年3月17日 16:55