为了将本地SQL数据库my_data中的表mt_ggh与另外一台电脑上的SQL数据库sql_2012连结,并查询得到我想要的内容。我编写了如下语句,查询结果也正常。
------------------------
use my_data
------------------------
select * 
into #tmp5
from  OPENROWSET('SQLOLEDB','192.168.0.120';'sa';'abc191','
select a.id_my, a.my_bh, b.*
from sql_2012.dbo.mt_table a
left outer join sql_2012.dbo.mt_ccb b on a.id_my=b.id_my
where b.leib <= 10')
------------------------
select a.*, b.*
from #tmp5 a
left outer join mt_ggh b on a.id_my=b.id_my
where a.id_my>'20120001'
------------------------
drop table #tmp5
------------------------
因为在与192.168.0.120电脑连接时,没有指定查询的数据库名称,所以每个表前面,都要加"sql_2012.dbo."这样查询结果才正确。现在我想改一下,先用use sql_2012再查询,结果报错了。------------------------
use my_data
------------------------
select * 
into #tmp5
from  OPENROWSET('SQLOLEDB','192.168.0.120';'sa';'abc191',' use sql_2012
select a.id_my, a.my_bh, b.*
from mt_table a
left outer join mt_ccb b on a.id_my=b.id_my
where b.leib <= 10')
------------------------
select a.*, b.*
from #tmp5 a
left outer join mt_ggh b on a.id_my=b.id_my
where a.id_my>'20120001'
------------------------
drop table #tmp5
------------------------
请问正确的写法应该如何写?

解决方案 »

  1.   

    你方向反了吧?
    你应该在另外一台电脑上的SQL数据库sql_2012中登录,然后远程连接本地SQL数据库my_data.
      

  2.   

    my_data
    在192.168.0.133的电脑上。sql_2012
    在192.168.0.120的电脑上。不论从哪一台机子上登入,连线另一台电脑时,都有相同的问题呀。
      

  3.   


    192.168.0.120电脑上的数据库名称今年是SQL_2012,以后把名称改为sql_2013了,那不是我们查询语句,全部都要改一遍呀?更改的也太多了吧。
      

  4.   

    你不如添加一个linkserver ,直接查询,不要用OPENROWSET