2013-02-13 51 views
4

我可以让我的执行SQL任务看看2个不同的连接管理器。 对于实例:我需要从ServerA/DatabaseA查询ServerB/DatabaseB的数据。 所以现在我需要写一个查询并从两台服务器上检索数据。 现在2台服务器没有连接服务器,不一定。用不同的服务器/数据库执行SQL任务

这是可能的,请让我知道。

+1

它是两台服务器上相同的* *数据查询或你想从一台服务器获取数据,并增强数据的信息从不同的位置设置? – billinkc 2013-02-13 19:53:06

+0

“不一定”是指你不想链接服务器,它们还没有链接,你可以链接它们,或者你无法链接服务器?如果你不想做一个链接服务器,你可以使用命令OPENROWSET,请看这里:http://jasonhaley.com/blog/post/2004/03/23/Using-OPENROWSET-for-moving-data-from -SQL-服务器到SQL-Server.aspx。你也可以做OPENDATASOURCE。 – Kprof 2013-02-13 20:13:38

回答

1

使用单独的数据流源任务为Server AServer B添加数据流任务。然后使用适当的“数据流转换”任务加入结果。

作为示例,此数据流将执行Flat File SourceOLEDB Source任务,对结果进行排序,然后对结果使用Merge Join任务。这听起来像你的实现需要两个OLEDB Sources或(ODBC,ADO NET等)。

我喜欢这种方法通过链接服务器或OPENROWSET,因为您不必在SQL Server数据源上配置链接服务器或启用Adhoc Distributed Queries

SSIS Data Flow

1

我已经找到一种方法来解决缺乏之前链接的服务器,和我做这样的事情 - 给它一个尝试:

if object_id('tempdb..#mytemptable') is not null begin drop table #mytemptable end 
select * into #mytemptable 
from openrowset('SQLNCLI10','Server=TheOtherServersName;Trusted_Connection=yes;','SELECT * FROM FullyQualifiedName.dbo.MyTable') 
/* Now use the temptable created on this server to do your join/subquery on whatever */ 
select * from MyOtherTable a 
join #mytemptable b on a.id = b.id 

干杯!

+1

回答问题,而不是评论。对于SSIS,您的评论显然是一个很好的答案。我不打算只是复制你的评论作为答案,尽管你的代表窃取。 :) – Zee 2013-02-13 21:19:22

相关问题