【发布时间】:2014-09-05 23:24:22
【问题描述】:
我正在使用数据流任务更新现有包。目前,此数据流任务有 2 个步骤:
- OLE DB Source 指向一个源连接并包含一个 sql 查询
- OLE DB 目标
我需要使用更复杂的查询来更新 OLE DB 源,该查询连接来自 2 个不同数据库的数据。此查询已经构建,并且有一个 Group By 子句、4 或 5 个 Where 条件和一个用于引导的 Order by 子句。手动运行时它就像一个魅力。问题是 OLE DB Source 只允许 1 个数据连接。
根据我在网上的searches,我需要创建 2 个不同的数据源,然后使用 Merge Join 步骤将它们合并。但是,这看起来我需要通过一系列步骤有效地重建我的整个查询。我宁愿不这样做。
有没有办法让我将我的 Select 查询(同样从 2 个 DB 中提取)复制并粘贴到包中,而无需完全重建它?
【问题讨论】:
-
您可以充当单个连接,但您可能必须使“其他”数据库对“第一个”数据库可见。您可以添加一组指向“其他”数据库对象的同义词。然后,您可以在使用同义词和内部对象的“第一个”数据库中编写查询。这就像一个单一的访问点。然而,该解决方案将带来安全性和架构方面的影响。无论如何希望它有所帮助..
-
数据库链接对这样的事情有用吗? docs.oracle.com/cd/B28359_01/server.111/b28310/…
-
加入两个db没有问题。如果它在 SSMS 中手动运行时工作,那么它应该在 OLEDB 源中工作。你得到什么实际错误?
-
@ElectricLlama,抱歉让您久等了。我不得不暂时搁置一下。奇怪的是我完全没有错误,它只返回 0 条记录。在 SSMS 中运行完全相同的查询会返回 80 多条记录。可能是因为我的包(位于目标服务器上)试图从 2 个数据库中提取数据并将数据移动到另一台服务器上的数据库?
-
没有。要么您不小心从错误的数据库中提取,要么您在查询中没有意识到一些差异。忘记跨数据库是一个问题 - 它不是。跨SERVER可以即可。如果它在 SSMS 中运行,它应该在该源中运行。您可以发布查询吗?请注意,如果不直接向我们提供所有信息,我们必须来回询问它,而且当您花时间发布查询时,您可能会注意到您的问题。最后,我建议您在这两种情况下都使用 SQL Profiler 来捕获查询。再次进行设置时,您可能会注意到这个问题。
标签: sql-server sql-server-2008 ssis