0

我们目前需要将财务交易提取到预算数据库中以进行报告。目前,我们获取所有财务记录(慢查询),然后获取所有预算。然后,我们进行合并连接,将财务记录过滤到只有我们有预算的那些。理想的方法是首先提取所有预算,将其输入另一个组件,然后生成一个查询,只提取那些需要的交易。

例子:

TableAinDatabaseA有一个名为 的标识列FakeId

TableBinDatabaseB具有相同的标识列;但是,TableB没有到 的一对一映射TableA。相反,“映射”(如果存在)将是一对零或一。我们想从where is in TableAin中获取所有财务记录。DatabaseAFakeIdTableBDatabaseB

我们无法在这两个 SQL 服务器之间创建链接服务器,所以这样做是SELECT * FROM TableA WHERE FakeId IN (SELECT FakeId FROM DatabaseB.TableB)行不通的。

谢谢,保罗

4

2 回答 2

2

正如您所说,您可以使用两个源并使用合并连接转换将它们连接起来。

另一个(更面向数据仓库)的解决方案是将两个表复制到一个单独的数据库(通常称为暂存区域),然后使用您提出的查询的变体在数据库级别执行逻辑。此解决方案还允许您实施索引和其他性能增强技术来优化集成。

于 2012-10-24T09:13:15.437 回答
1

如果您可以使用 SSIS,我认为您可以使用“查找”组件:

在 SQL Server 集成服务中实现查找逻辑 http://www.simple-talk.com/sql/ssis/implementing-lookup-logic-in-sql-server-integration-services/

于 2012-10-24T05:58:07.540 回答