有A、B两台SQl SERVER2005服务器,现在想在A上做一个查询,然后把结果导到B上的表里。
查询要涉及到7、8个表,一个语句不好查出来,
分了两个步骤:第一步查完了暂存到临时表里,第二步用临时表继续关联查出结果。
现在情况是,A服务器只有它的查询权限,不能在上面建物理表、过程或视图,
1、用导入向导的话,因为查询是好几个句子,提示不是一个查询,不能直接导
2、用链接服务器得时候,第一步确实挺快,但是暂存的时候临时表是建立在B服务器上的,A上的表有一些非常大,用B上的临时表和远程的A继续关联时,效率其低,慢的不能忍受
3、想用ssis,里面的导入导出也是只能单一个句子,多语句最后得出的查询就不行了现在的前提就是A服务器不能建立物理表,想保证查询效率,今后要把这些弄成定时运行的,小弟想请教一下,用链接服务器的时候,能不能在第一步查询的时候把临时表建立在链接服务器上呢?
或者ssis里面有没有什么好办法能在远程服务器上多语句查询,然后导出?
或者还有什么别的好办法吗?
谢谢各位指点个!

解决方案 »

  1.   

    DTS咋做啊?不能在远程服务器上建表,也不能把数暂存到物理表里,最好不要本地表和远程表关联想保证效率,咋做啊?
      

  2.   

    最终导的是几个dataset ? 如多个dataset就多建几个ssis (或同一ssis里多建几个task)如是只有一个dataset,应该不会有这样的问题,语句很复杂的话,可以建sp执行
      

  3.   

    sp = store procedure = 存储过程 A上不能建sp ? 看来是只有一个dataset ?这样连ssis都省了,那就比较郁闷,只能在B上建立和A的serverlink, 然后将sp建在B上了。在SP中直接insert 就好了。
      

  4.   

    给个建议,将A中(那7,8个表)的数据,简单点选有用的,直接导入到B中。(B也建同样的7,8个表)。这步可以用ssis来导,速度比较快。
    然后在B中建立sp,将复杂运算的结果,insert到该去的地方。
      

  5.   

    A上不能建任何东西,只能查询,一开始我也想用过程里面建链接服务器呢,结果发现
    在B的存储过程里面好像不能建立链接服务器啊,
    EXEC sp_addlinkedserver和EXEC sp_addlinkedsrvlogin,放在查询分析里执行没问题,放在过程里,只要加Go,就报语法错误,还有就是用链接服务器是挺快,第一步完了想暂存临时表,结果发现是存在B上的,然后B本地的临时表和远程A的表关联,效率其低啊!
    用链接服务器,能不能用什么方式,一次性可以执行好几句,然后返回结果啊?
      

  6.   

    其实也想着把用到的表先拽过来,然后在本地做,但是远程的表一个是量太大,再一个是所需要的数据,用id做主键,我需要哪些数,连这个id都是关联好几次才能得到,也挺麻烦
      

  7.   

    对了,用ssis里面的执行sql任务,能不能sqlstatement那里能不能写多语句的查询啊?
    哪怕用什么来接收结果集呢