我想把另一台数据库中的数据通过存储过程的方式每天晚上自动更新到我的服务器中,该如何写存储过程?
原始数据库IP:10.10.0.1;用户SA;密码:123;库:test
更新数据库IP:10.10.0.9;用户SA;密码:111;库:OP

解决方案 »

  1.   

    --查一下设置,设置不正确时只能查询不能更新
    1、运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC。
    添加一个 DWORD 值 TurnOffRpcSecurity,值数据为 1。
    2、重启MS DTC服务。
    3、打开“管理工具”的“组件服务”。
        a.  浏览至"启动管理工具"。 
        b.  选择"组件服务"。 
        c.  展开"组件服务"树,然后展开"我的电脑"。 
        d.  右键单击"我的电脑",然后选择"属性"。 
          在 MSDTC 选项卡中,确保选中了下列选项: 
    网络 DTC 访问
    网络管理
    网络事务
    XA 事务
    另外,"DTC 登录帐户"一定要设置为"NT Authority\NetworkService"。 
    4、重启MS DTC服务。
    5、再次运行 regedt32,浏览至 HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC,然后删除 TurnOffRpcSecurity 项。
    -----------
    /***********************************************************************/
    介绍几种连接更新方法:
    --创建链接服务器
    exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
    exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
    go--查询示例
    select * from srv_lnk.数据库名.dbo.表名--导入示例
    select * into 表 from srv_lnk.数据库名.dbo.表名--以后不再使用时删除链接服务器
    exec sp_dropserver 'srv_lnk','droplogins'
    go--如果只是临时访问,可以直接用openrowset
    --查询示例
    select * from openrowset('SQLOLEDB'
    ,'sql服务器名';'用户名';'密码'
    ,数据库名.dbo.表名)
    --导入示例
    select * into 表 from openrowset('SQLOLEDB'
    ,'sql服务器名';'用户名';'密码'
    ,数据库名.dbo.表名)
    select * from openrowset('SQLOLEDB'
    ,'sql服务器名';'用户名';'密码'
    ,数据库名.dbo.表名)
    openrowset可以用下面两个
    OPENDATASOURCE或是openquery
      

  2.   

    用复制的方式会好些。
    http://blog.csdn.net/zjcxc/archive/2003/12/29/20083.aspx