我自己的数据库是A,    B是远程的数据库,在A里面建立了一个到B的链接服务器
存储过程是写在A里面的,一段并不复杂的,结果集为大约2000行的sql语句,在A上面跑要近50秒,而直接在B上面跑则1秒都不用
想问问这是怎么回事?我在A的存储过程里面写的sp,执行的时候应该是通过链接服务器在B上面运行的啊,再加上2000行结果集从B传到A的过程,怎么都不用50秒吧?而且那段sql拷出来直接在B上面跑很快,说明sql语句本身没有什么问题.链接服务器都是那么慢的么?这50秒的时间到底包含了哪些任务的时间呢?

解决方案 »

  1.   

    你得存储过程是怎么调用的?放在OPENROWSET里还是用EXECUTE AT ?
      

  2.   

    链接服务器的表数据在算之前先同步下来是一种思路,如果实在不行就只能这么搞了,可是实在是不爽.我的存储过程里面就是直接这样
    select * .....
    from remote.cpdb.dbo.tb_company_0081 tc,remote.cpdb.dbo.tb_public_0007 tp
    用连接服务器名字+数据库+表的方法去直接调用.对存储过程的调用则是想通过job定时去做的,目前还不知道怎么调...请大家看看我这个帖子^_^
    http://topic.csdn.net/u/20100612/16/ccf8bdaa-1ec0-4b11-b704-7c070679f261.html?seed=294543515&r=66198001
    我的机器是否开启远程连接在哪里看呢?应该是开了的,因为A机器并不是我电脑上的数据库,也是我用Express连接过去的一台服务器,然后A再访问B这个数据库的