我在sql语句中远程删除一个表这里是连接
if exists(select 1 from master..sysservers where srvname='srv_lnk')
exec sp_dropserver 'srv_lnk','droplogins'
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','server2'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','sa'执行删除
drop table  srv_lnk.[bbsrank].[dbo].[rank_history]
结果提示上面的语句
The object name 'srv_lnk.bbsrank.dbo.' contains more than the maximum number of prefixes. The maximum is 2
请问该怎么修改

解决方案 »

  1.   

    sp_addlinkedserver @server = N'LinkServer',
        @srvproduct = N' ',
        @provider = N'SQLOLEDB', 
        @datasrc = N'ServerNetName', 
        @catalog = N'Northwind'
    GO
    SELECT *
    FROM LinkServer.Northwind.dbo.Shippers -------这样就对呀
    GO
    把你的链接服务器的默认数据库改为bbsrank试试
      

  2.   

    用select是没错的,但是用其它操作就会报错,不信你试试update什么的
      

  3.   

    是这一段srv_lnk.[bbsrank].[dbo].[rank_history]的前缀太多了,要换种方法显示,但是我不怎么怎样换
      

  4.   

    我刚刚又试了一下,update操作也没问题啊你用srv_lnk...rank_history看看
      

  5.   

    DROP TABLE语法不支持删除链接服务器数据库实例中数据库的表。
      

  6.   

    啊,其实我是想先删除一端表,然后复制表过去,请问有没有办法解决,如果直接用insert的话,主键又复制不了
      

  7.   

    删除表的方法我已经用下面的解决了
    exec srv_lnk.[bbsrank].[dbo].sp_executesql N'drop table rank_history'就是复制的时候还是老问题
    select * into srv_lnk.[bbsrank].[dbo].[rank_history] from rank_history