查找转换

更新日期: 2006 年 12 月 12 日

查找转换通过联接输入列中的数据和引用数据集中的列来执行查找。引用数据集可以是现有的表或视图,也可以是新表或 SQL 语句的结果。查找转换使用 OLE DB 连接管理器连接到包含引用数据集的源数据的数据库。有关详细信息,请参阅 OLE DB 连接管理器

可以用以下方式来配置查找转换:

  • 指定包含引用数据集的表或视图。
  • 通过指定 SQL 语句来生成引用表。
  • 指定输入和引用数据集间的联接。
  • 将引用数据集的列添加到转换输出中。
  • 通过使用缓存 SQL 语句,指定缓存部分或全部引用数据集来提高性能。
  • 将缓存 SQL 语句中的参数映射到输入列。
  • 指定在 32 位和 64 位环境中转换可以使用的内存量 (MB)。32 位环境实施 3072 MB 的限制,而 64 位环境则没有限制。

查找转换在转换输入的值和引用数据集的值之间执行同等联接。使用同等联接意味着转换输入中的每一行都至少要匹配引用数据集中的一行。如果引用数据集中没有匹配的项,则不发生联接,也不从引用数据集返回值。这是一个错误。除非转换被配置为忽略错误或将错误行重定向到错误输出,否则该错误会导致转换失败。如果引用表中有多个匹配项,则查找将基于该查找查询只返回第一个匹配项。如果发现多个匹配项,则不生成错误或警告,除非将查找转换配置为使用完整的预缓存。如果使用完整预缓存,则在填充缓存时,如果检测到多个匹配项,则会生成警告。

联接可以是组合联接,即可以将转换输入中的多个列联接到引用数据集中的列。除了 DT_R4、DT_R8、DT_TEXT、DT_NTEXT 或 DT_IMAGE 外,转换支持联接其他任何数据类型的列。有关详细信息,请参阅 Integration Services 数据类型

通常,将来自引用数据集的值添加到转换输出中。例如,查找转换可以使用输入列的值从表中提取产品名,然后将产品名添加到转换输出中。来自引用表的值可以替换列值,也可以添加到新列中。

查找转换执行的查找区分大小写。可以通过字符映射转换先将数据转换为大写或小写,然后在生成引用表的 SQL 语句中包含 UPPER 或 LOWER 函数,以此避免因数据中大小写不同引起的查找失败。有关详细信息,请参阅字符映射表转换UPPER (Transact-SQL)LOWER (Transact-SQL)

还可以通过不使用缓存和从不区分大小写的数据库读取数据来避免查找失败。

此转换有一个输入、一个常规输出和一个错误输出。

缓存类型

可以按下列方法分配引用数据集可用的内存:

  • 全部预缓存,在处理输入前读取全部引用数据集。这是默认的缓存类型。若要将查找转换配置为使用全部预缓存,则确保清除查找转换编辑器的**“高级”**选项卡中的所有选项。
  • 部分缓存,由查找转换指定加载引用数据的缓存的大小。此选项仅可用于支持带密钥访问的连接。若要将查找转换配置为使用部分缓存,请在查找转换编辑器的**“高级”选项卡上选择“启用内存限制”,然后选择“启用缓存”或选择“修改 SQL 语句”,或同时选择“启用缓存”“修改 SQL 语句”**。
  • 不缓存,行集中的每一行都访问引用数据集。若要将查找转换配置为不使用缓存,请在查找转换编辑器的**“高级”选项卡上,选择“启用内存限制”**并清除所有其他选项。

有关**“高级”**选项卡的详细信息,请参阅查找转换编辑器(“高级”选项卡)

如果查找操作与包含空值的列匹配,那么,除非手动更新 SQL 语句将 OR ISNULL(ColumnName) 条件包含其中,否则已配置为使用部分缓存或不缓存的查找转换将失败。如果使用完全预缓存,则查找操作将成功。

ms141821.note(zh-cn,SQL.90).gif注意:
请尽可能避免在查找操作中使用可能包含空值的列。如果列包含空值,请将查找转换配置为使用错误输出,此错误输出将引用表中没有匹配行的行定向到单独的转换输出。另外,也可以考虑使用支持对空值进行查找操作的完全缓存。

Integration Services 和 SQL Server 在比较字符串时所用的方式不同。如果查找转换配置为使用全部预缓存,则 Integration Services 将在缓存中执行查找比较;否则,查找操作将使用参数化的 SQL 语句,并且 SQL Server 执行查找比较。这意味着,根据缓存类型的不同,查找转换可能会从同一查找表中返回不同数量的匹配项。

缓存 SQL 语句

可将查找转换配置为使用缓存 SQL 语句。SQL 语句可以选择引用数据集的子集,以限制其大小。如果引用数据集非常大,使用缓存语句则可限制引用数据集所用的内存量。

缓存 SQL 语句可在其 WHERE 子句中使用值或参数。将参数映射到输入列,并在运行时用输入列的值对其更新。

查找转换故障排除

如果是在 Microsoft SQL Server 2005 Service Pack 2 (SP2) 中启动,则能够记录查找转换对外部数据访问接口所做的调用。您可以使用这项新的日志记录功能,对查找转换执行的从外部数据源填充缓存进行故障排除。若要记录查找转换对外部数据访问接口所做的调用,请在包级别启用包日志记录并选择**“诊断”**事件。有关详细信息,请参阅包执行故障排除

配置查找转换

可以通过 SSIS 设计器或以编程方式来设置属性。

有关可以在查找转换编辑器对话框中设置的属性的详细信息,请单击下列主题之一:

**“高级编辑器”对话框反映了可以通过编程方式进行设置的属性。有关可以在“高级编辑器”**对话框中或以编程方式设置的属性的详细信息,请单击下列主题之一:

有关如何设置属性的详细信息,请单击下列主题之一:

请参阅

概念

模糊查找转换
字词查找转换
创建包数据流
Integration Services 转换

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 添加了有关如何使用 UI 来启用各种缓存类型的信息。
  • 添加了有关 SQL Server 2005 SP2 如何包括新日志记录消息的信息。使用这些消息,用户可以对此转换对外部数据访问接口所做的调用进行故障排除。

2006 年 4 月 14 日

新增内容:
  • 介绍了为 32 位和 64 位环境指定缓存大小的能力。
  • 添加了有关适用不同缓存类型有何影响的信息。

2005 年 12 月 5 日

更改的内容:
  • 阐明匹配行为。