日期:2014-05-18  浏览次数:20411 次

关于OPENROWSET语句的使用问题与USE问题。

为了将本地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
------------------------


请问正确的写法应该如何写?


------解决方案--------------------
你不如添加一个linkserver ,直接查询,不要用OPENROWSET
------解决方案--------------------
探讨
你不如添加一个linkserver ,直接查询,不要用OPENROWSET