【发布时间】:2026-01-24 07:00:01
【问题描述】:
目前,我有一个连接到 20 多个 dbs(相同结构)的控制流
在这个控制流中,除了与 db 的连接不同的数据流之外,一切都是相同的。 这是数据流的示例:
OLE DB Source 实际上是不同的。
在这种情况下是否可以使用 Foreach 循环来避免这些重复? 如果可能,该怎么做?我找不到任何描述如何连接到不同数据库的好文章。
谢谢,
伊利亚
编辑:
我发现一篇文章描述了我需要的大部分内容:http://sql-bi-dev.blogspot.com/2010/07/dynamic-database-connection-using-ssis.html
我遵循了此处的所有步骤,但我不了解查询的一部分。这是来自那篇文章的查询:
SELECT '' TableName, N'' ConnString, 0 RecordCount, GETDATE() ActionTime
我不明白这个语法,我猜这是错误的来源:
[OLE DB 源 1] 错误:输出列出错 输出“OLE DB 源输出”(11) 上的“ConnString”(37)。专栏 返回的状态是:“文本被截断或一个或多个字符 目标代码页中没有匹配项。”。
[OLE DB 源1] 错误:“输出列“ConnString”(37)” 由于发生截断而失败,并且截断行处置 在“输出列“ConnString”(37)”上指定截断失败。 指定对象的指定对象发生截断错误 组件。
[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。这 组件“OLE DB 源”(1) 上的 PrimeOutput 方法返回错误 代码 0xC020902A。组件返回失败代码时 管道引擎称为 PrimeOutput()。故障码的含义 由组件定义,但错误是致命的并且管道 停止执行。在此之前可能会发布错误消息 提供有关失败的更多信息。
我想从名为 Agency 的表中获取数据(我在变量 SourceTable = 'Agency' 中定义 - 如果我设置了不存在的表然后我得到错误,所以我猜到 Source DB 的连接是好的).. .它让我感到困惑,我没有在任何地方定义我需要的列,所以我猜这个查询中有一个错误,但我不明白它的语法。有什么建议吗?
编辑 2:
我遇到的另一个问题是消息框总是在连接字符串中返回相同的值 - 变量 ConnString 不会改变。如何将 SourceList 变量中的值分配给它?
【问题讨论】: