现在有两个数据库A和B,他们不在一个服务器上,IP分别是192.168.0.1和2。A数据库中有个临时表T_push,里面的数据每隔3秒左右就被取走。我想每次这个表里插入数据的时候,就往B服务器(IP是2)的T_Same表里插同样的一条记录,这个要怎么做?触发器里的代码要怎么写?麻烦高手写的详细点,最好是用企业管理器做大部分工作。这个问题我想主要难在是两个不同的数据库,有两个IP的问题上吧?谢谢!

解决方案 »

  1.   

    临时表上无法建触发器看来LZ要换个方法了,或者换个实体表
    两个数据库不在一个服务器上面可以通过建立LinkServer互相访问
      

  2.   

    没描述清楚!不是临时表,T_push是一个实际存在的表,只不过里面的数据每3秒就会被取走并删除!LinkServer要怎么建?麻烦把完整的步骤帮忙写下,多谢!!!
      

  3.   

    192.168.0.1上建立到2的链接服务器:Link2A库T_push创建触发器:create trigger on T_push
    for insert
    as
    set nocount on
    insert Link2.数据库.dbo.表 select * from inserted
    set nocount off
    go
      

  4.   

    192.168.0.1上建立到2的链接服务器:Link2
    要怎么建立,不好意思,不会!
      

  5.   

    大哥!麻烦写的详细点,我试了一下,是这样子么?
    (1)在.1服务器上:企业管理器—安全性—链接服务器—创建连接—服务器类型(SQLserver)—用户名密码
    (2)在.1服务器上:企业管理器—数据库—表名—所有功能—触发器管理—里面写入代码
        insert [192.168.0.2].数据库.dbo.表 select * from inserted
         set nocount off
    这样子好象报错!--------------------------------------------------------------------------
    OLE DB 提供程序 'SQLOLEDB' 未能 INSERT INTO 表 '[192.168.0.100].[EmoAsp].[dbo].[pushmsg]'(由于列 'ID')。用户没有写入该列的权限。
    [OLE/DB provider returned message: 多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。]
    OLE DB 错误跟踪[OLE/DB Provider 'SQLOLEDB' IRowsetChange::InsertRow returned 0x80040e21:  Data status sent to the provider: [COLUMN_NAME=ID STATUS=DBSTATUS_S_OK], [COLUMN_NAME=phonenumber STATUS=DBSTATUS_S_OK], [COLUMN_NAME=msg STATUS=DBSTATUS_S_OK]. Data status returned from the provider: [COLUMN_NAME=ID STATUS=DBSTATUS_E_PERMISSIONDENIED], [COLUMN_NAME=phonenumber STATUS=DBSTATUS_E_UNAVAILABLE],...
      

  6.   

    其中一种方法:192.168.0.1上,打开企业管理器 -> (local)(Windows NT) -> 安全性 -> 连接服务器 -> 右键 -> 新建连接服务器 -> 常规 -> 连接服务器:Link2 -> 其它数据源 -> Microsoft OLE DB Provider for SQL Server -> 数据源:192.168.0.2(也可用机器名) -> 安全性 -> 用此安全上下文进行 -> 输入远程登录用户名和密码。
      

  7.   

    在192.168.0.1上建LinkServerUSE [master]
    GO
    EXEC master.dbo.sp_addlinkedserver @server = N'LinkServerName', 
    @provider=N'SQLOLEDB', @datasrc=N'192.168.0.1'
    GOUSE [master]
    GO
    EXEC master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'LinkServerName', 
    @locallogin = NULL , 
    @useself = N'False', 
    @rmtuser = N'sa', 
    @rmtpassword = N''--这里是密码
    GO
      

  8.   

    最好在0.1上打开查询分析器,验证一下:select top 1 * from Link2.master.dbo.sysobjectsinsert ....delete ...
      

  9.   

    高升的方法有点问题!
    ------------------------------------------------------------------------------------
    服务器: 消息 15429,级别 16,状态 1,过程 sp_addlinkedserver,行 72
    '(null)' 是无效的产品名。
    服务器: 消息 15015,级别 16,状态 1,过程 sp_addlinkedsrvlogin,行 40
    服务器 'LinkServer' 不存在。请用 sp_helpserver 来显示可用的服务器。
      

  10.   

    LinkServer里面写的用户名和密码是另一台服务器就是 192.168.0.2 上的用户名和密码
    不要写错了
      

  11.   

    是无效的产品名
    那个是我忘记写了你随便写的东西进去,比如SQL 或者 192.168.0.2 之类都可以
    没什么实际意思
      

  12.   

    高升大哥,这个东西都没接触过,麻烦你帮忙写全点,多谢,我用Limpire(昨夜小楼)的方法在企业管理器上都搞通了,我想学学用代码写,多谢!我先结帖子!
      

  13.   

    sp_addlinkedserver和sp_addlinkedsrvlogin联机帮助里面有很多例子代码,自己参照建立多练习就可以了。
      

  14.   

    服务器: 消息 8501,级别 16,状态 3,过程 Checks,行 5
    服务器 'NMCOVICS-0076' 上的 MSDTC 不可用。
    这个是什么错误!!?
      

  15.   

    服务器 'NMCOVICS-0076' 上的 MSDTC 不可用。
    你两台服务器上的分布式事务没有开把DTC服务打开