本地数据库有个表news
远程数据库也有个表news
二者结构一样,现想把本地表news中的数据复制到远程数据库的news表中在本的查询分析器中执行:exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','158.210.133.152'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'osaa','123456'select * into srv_link.[osaa-www.aaa.com].dbo.news from news
错误:
对象 名称 'srv_link.[osaa-www.aaa.com].dbo.' 包含的前缀数目超过了最大值。最大值为 2。在论坛搜了一下,发现有说用别名的来解决的。可是我很迷糊,不知怎么在上面的语句中,把srv_link.[osaa-www.aaa.com].dbo指定一个别名
求教各位大大们,谢谢!!

解决方案 »

  1.   

    在你建Linked Server时, srv_link就是该服务器的别名了.你的语法有错误. 因为在srv_link上有了同样结构的表了, 你就不能用SELECT * INTO了.你需要用INSERT INTO:INSERT JOIN srv_link.[osaa-www.aaa.com].dbo.news
    SELECT *
    FROM news
    SELECT..INTO..是用来建新表的.
      

  2.   

    SQL CODEInsert into srv_link.[osaa-www.aaa.com].dbo.news(字段1,字段2........) select 字段1,字段2......from News
      

  3.   

    要是两表都已经存在,那么使用insert into语句.
      

  4.   

    Insert into srv_link.[osaa-www.aaa.com].dbo.news(字段1,字段2........) select 字段1,字段2......from News 使用这个语句,并且还加了exec sp_dropserver 'srv_lnk','droplogins'成功了。数据交换终于成功了。谢谢各位
      

  5.   

    如果表的结构一样, 并且字段的次序都一样, 你就可以直接:
    INSERT INTO srv_link.[osaa-www.aaa.com].dbo.news
    SELECT *
    FROM news把所有字段列出来, 累不累呀?
    (当然偶的不是best practice....@_@)
      

  6.   

    不列出字段来,我也试过,但是出错了而只要我列出了字段,就成功了。字段我是通过SQL语句查询出来的然后生成的一个字符串,所以也没什么累的。呵呵。