none
使用连接服务器更新数据效率慢的问题 RRS feed

  • 问题

  •   使用以下带有连接服务器的语句更新数据速度非常慢,使用profiler监控到了居然会把这个语句当作游标逐行扫描目标表来做,执行效率非常差,有高手有解决方案吗? 

       update [172.16.7.129].productDB.dbo.tblStyle
    set ChineseName=ChineseName+'D' where StyleId=N'0091002';

    2010年3月30日 1:44

答案

  • 改成这样

    exec [172.16.7.129].productDB..sp_executesql N'update update dbo.tblStyle
           set ChineseName=ChineseName+''D'' where StyleId=N''0091002'';

    '

    • 已标记为答案 phi he 2010年3月30日 7:55
    2010年3月30日 4:59
  • --[172.16.7.129]--為連接服務器時
    exec('update  productDB.dbo.tblStyle set ChineseName=ChineseName+''D'' where StyleId=N''0091002''') AT [172.16.7.129]
    
    SQL05以上版本時這樣用試試
    ROY WU(吳熹)
    • 已标记为答案 phi he 2010年3月30日 7:55
    2010年3月30日 6:01
    版主

全部回复

  • 直接连接到这个服务器上执行吧

    update dbo.tblStyle
    set ChineseName=ChineseName+'D' where StyleId=N'0091002';

    只有查询才有必要使用连接服务器,更新等操作最好不要使用链接服务器。


    family as water
    2010年3月30日 1:47
  • 现在就是有这样的业务需要,需要在个分布式事物中同步更新本地库和远程库:

       begin distributed tran

          update dbo.tblStyle
    set ChineseName=ChineseName+'D' where StyleId=N'0091002';

           update update [172.16.7.129].productDB.dbo.tblStyle
           set ChineseName=ChineseName+'D' where StyleId=N'0091002';

    commit;

     

    2010年3月30日 3:19
  • 改成这样

    exec [172.16.7.129].productDB..sp_executesql N'update update dbo.tblStyle
           set ChineseName=ChineseName+''D'' where StyleId=N''0091002'';

    '

    • 已标记为答案 phi he 2010年3月30日 7:55
    2010年3月30日 4:59
  • --[172.16.7.129]--為連接服務器時
    exec('update  productDB.dbo.tblStyle set ChineseName=ChineseName+''D'' where StyleId=N''0091002''') AT [172.16.7.129]
    
    SQL05以上版本時這樣用試試
    ROY WU(吳熹)
    • 已标记为答案 phi he 2010年3月30日 7:55
    2010年3月30日 6:01
    版主
  • 消息 7411,级别 16,状态 1,第 1 行
    未将服务器 '172.16.7.129' 配置为用于 RPC。
    2010年3月30日 7:49
  • 可以了,谢谢大家
    2010年3月30日 7:55