你可以先导到一个临时表如:select * into test.Main.dbo.TEMPBarInfo from Main..Info Where MsIsUpdate=0再控制远程从临时表中导入insert test.Main.dbo.BarInfo select * from test.Main.dbo.TEMPBarInfo

解决方案 »

  1.   

    建议上面你不要用事务,你可以先导到一个临时表 这一步是传输数据再控制远程从临时表中导入 只是控制,是都在远程完成的
    事物的用处:create table Table1 (a int)
    go
    begin tran
      insert table1 values(1)               ----这句是对的
      insert table1 values('aaa')           ----这句由于类型不一样将报错
    commit transelect * from table1         ------结果是两句都没插入!应为他们是一个事务
      

  2.   

    如果该句select * into test.Main.dbo.TEMPBarInfo from Main..Info Where MsIsUpdate=0
    失败或者有错,如何解决?
      

  3.   

    其实我原来的意思是直接做个存储过程来实现同步数据,
    如果按照你这样的做法,我其实直接使用ado来执行sql语句来实现,而且其安全程度也应该相当的高,这样,我原来打算使用存储过程的方法就完全就显得没必要了。
      

  4.   

    关于数据库引擎的问题:我只试过SQLOLEDB和MSDASQL,这两种都不行,而且我在帮助上也只查到这两种可为我所用。
    关于事务:如果我使用一个select into语句,如果表非常的大和长,而且网络的速度相当的慢的情况下,如果网络在这个语句的中途发生中断,是否会出现只有一部分数据插入的问题,类似的还有insert,update,delete等语句,如果没有该类问题,那事务存在的意义个人感觉没有那么大,一般说来,个人感觉所有的条件都可以在一个程序的开始确定,除非该程序需要从外界读取临时数据。(个人意见)
      

  5.   

    不需要用到事务吧??
    直接和另一台远程Server建立连接,然后进行数据操作,断开连接不就行了吗?
      

  6.   

    我的意图是这样的,比如本地有一批数据需要加到远地数据库,标志列为IsUpdate,如果IsUpdate为0,则Insert或者update或者delete掉远地数据库的数据,并将本地数据中IsUpdate置为1,当然,这必须在Insert或者Update成功的情况下,否则将会出现数据的不一致,条件就是这样,另外远地数据可以与本地数据不一样,但是本地数据必须与远地数据达到一致,我想了半天都想不出好办法,很容易出现数据不同意的情况