需求:通过SQL语句直接删除远程服务器上的SQLSERVER数据
我的写法是:delete from table opendatasource('sqloledb','data source=server;password=sa;userid=sa').datasource.dbo.table where id in(select top 1000 id from opendatasource().datasource2.dbo.table2 a where a.id>1001 order by a.id) and id>1001
其中TOP 1000是分批删除数据,就是每次删除最多是1000条记录,但发现如果删除远程的数据些方法的也根本是没法运行的,就是太慢了。寻求更高的删除数据效率,各位高手多多帮忙先谢谢了

解决方案 »

  1.   


    select * from 服務器名稱.數據庫名稱.dbo.表名
      

  2.   

    寻找高效率的删除数据语句,不要告诉我用TRUNCATE....DROP TABLE 再select * into table.....谢谢
      

  3.   

    select * from openrowset('SQLOLEDB'
    ,'sql服务器名';'用户名';'密码'
    ,数据库名.dbo.表名)
    用openrowset
    opendatasource只能用做查询用
      

  4.   

    谢谢大家..........我测试过了,DELETE FROM OPENDATAOUSRCE()完全可以删除的,我都是用OPENDATASOURCE来删除数据的
    现在删除的效率提高了,就是应用DELETE FROM OPENDATASOURCE().TABLE WHERE ID IN('','','','')这种方法,中间不能加入SELECT语句,用程序控制现在是INSERT INTO OPENDATASORUCE().TABLE 这种方法来插入到远程数据库里,的效率不知道什么样,还有openrowset的执行效率不知道如何?
      

  5.   

    存储过程?写在本地还是远程的,如果写在本地的话那么我写的DELETE之类的都算是存储过程的,如果写在远程的话,远程是法办法连接到本地的SQLSERVER的,没法读到本地的数据