我没这么做过,我是先建立个远程数据联接,然后再对这个联接里的表做的,也是oracle8的,没问题的,你实验一下

解决方案 »

  1.   

    mywhsw(bamboo) :请问用SQL语句如何写?(对这个联接里的表做)
      

  2.   

    OPENDATASOURCE好象不能传参数,请另外建一个连接
      

  3.   

    该如何建立个远程数据联接
    ,然后再对这个联接里的表做?
    请高手们给些详细说明或者写一些代码(SQL)。。thanks
      

  4.   

    此示例创建一台名为 LONDON Mktg 的链接服务器,该服务器使用用于 Oracle 的 Microsoft OLE DB 提供程序,并且假设此 Oracle 数据库的 SQL*Net 别名为 MyServer。USE master
    GO
    -- To use named parameters:
    EXEC sp_addlinkedserver
       @server = 'LONDON Mktg',
       @srvproduct = 'Oracle',
       @provider = 'MSDAORA',
       @datasrc = 'MyServer'
    GO
    -- OR to use no named parameters:
    USE master
    GO
    EXEC sp_addlinkedserver 
       'LONDON Mktg', 
       'Oracle', 
       'MSDAORA',
       'MyServer'
    GO
      

  5.   

    建立连接link1
    然后
    link1.目录名.架构名.表名
      

  6.   

    对于“link1.目录名.架构名.表名”这个表来说,可以进行增删改操作,当然要有oracle的权限,但是对于大对象来说是不能简单的靠连接来做的 ,比如long row\blob等类型,都是不可以的
      

  7.   

    写在存储过程也不行啊。提示以下错误:
    (所影响的行数为 1 行)服务器: 消息 7391,级别 16,状态 1,过程 INSERTZB,行 4
    该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
    [OLE/DB provider returned message: 新事务不能登记到指定的事务处理器中。 ]触发器如下:
    CREATE TRIGGER test_exam ON [dbo].[test1] 
    FOR INSERT
    AS
    --drop trigger test_exam
    begin
    declare @id int --序号
    declare @name varchar(20) --姓名select id=@id,name=@name from inserted
    exec INSERTZB @name
    end储存过程:CREATE PROCEDURE INSERTZB @ZB varchar(20) AS
    --Drop PROCEDURE INSERTZB
    --set @ZB='a'
    insert OPENDATASOURCE('SQLOLEDB', 'Data Source=192.168.2.136;User ID=SA;Password=' )
    .test.dbo.test(name) values (@ZB)GO