Поделиться через


Преобразование «Уточняющий запрос»

Изменения: 12 декабря 2006 г.

Преобразование «Уточняющий запрос» выполняет уточняющие запросы, объединяя данные во входных столбцах со столбцами в эталонном наборе данных. Эталонным набором данных может быть таблица или представление, новая таблица или результат выполнения инструкции SQL. Для подключения к базе данных, содержащей данные, служащие источником для эталонного набора данных, преобразование «Уточняющий запрос» использует диспетчер соединений OLE DB. Дополнительные сведения см. в разделе Диспетчер соединений OLE DB.

Можно настроить преобразование «Уточняющий запрос» следующими способами:

  • Указать таблицу или представление, содержащие эталонный набор данных.
  • Создать ссылочную таблицу, указав инструкцию SQL.
  • Указать соединения между входом и эталонным набором данных.
  • Добавить столбцы из эталонного набора данных к выходу преобразования.
  • Для улучшения производительности указать, частично или полностью будет кэширован эталонный набор данных с помощью кэширующей инструкции SQL.
  • Сопоставить параметры в инструкции SQL кэширования входным столбцам.
  • Указать, сколько мегабайтов памяти может использовать преобразование в 32-разрядной и 64-разрядной средах. В 32-разрядной среде размер используемой памяти ограничен 3 072 мегабайт. В 64-разрядной среде такого ограничения не существует.

Преобразование «Уточняющий запрос» выполняет эквивалентное соединение значений на входе преобразования и значений в эталонном наборе данных. Использование эквивалентного соединения означает, что каждая строка на входе преобразования должна соответствовать по крайней мере одной строке из эталонного набора данных. Если нет соответствующих записей в эталонном наборе данных, то объединения не произойдет, и никакие значения не будут возвращены из эталонного набора данных. Это является ошибкой, поэтому произойдет сбой преобразования, если оно не настроено пропускать ошибки или перенаправлять строки ошибок на выход ошибок. Если в ссылочной таблице содержится несколько соответствующих записей, уточняющий запрос возвращает только первое соответствие. Если обнаружено несколько соответствий, а преобразование «Уточняющий запрос» не использует полное предварительное кэширование, то не создается ни предупреждение, ни сообщение об ошибке. Если используется полное предварительное кэширование, то в случае обнаружения нескольких соответствий создается предупреждение из-за переполнения кэша.

Соединение может быть составным. Это значит, что можно объединить несколько столбцов на входе преобразования со столбцами в эталонном наборе данных. Преобразование поддерживает соединение столбцов с любыми типами данных, кроме DT_R4, DT_R8, DT_TEXT, DT_NTEXT и DT_IMAGE. Дополнительные сведения см. в разделе Типы данных служб Integration Services.

Обычно значения из эталонного набора данных добавляются к выходу преобразования. Например, преобразование «Уточняющий запрос» может извлечь название продукта из таблицы, используя значение из входного столбца, затем добавить название продукта в выход преобразования. Значения из ссылочной таблицы могут заменить значения столбца или могут быть добавлены в новый столбец.

Уточняющие запросы выполняются преобразованием «Уточняющие запросы» с учетом регистра. Чтобы избежать сбоев поиска, вызванных различиями регистра в данных, можно предварительно преобразовать данные в верхний регистр или нижний с помощью преобразования «Таблица символов» и затем включить функции UPPER или LOWER в инструкцию SQL, создающую ссылочную таблицу. Дополнительные сведения см. в разделах Преобразование «Таблица символов», UPPER (Transact-SQL) и LOWER (Transact-SQL).

Также можно избежать сбоев при поиске, если не использовать кэширование и считывать данные из нечувствительных к регистру баз данных.

Это преобразование содержит один вход, один обычный выход и один выход ошибки.

Типы кэширования

Память для эталонного набора данных может быть распределена следующими способами.

  • Полное предварительное кэширование, в котором весь эталонный набор данных считывается до обработки входа. Это тип кэширования по умолчанию. Чтобы настроить преобразование «Уточняющий запрос» для полного предварительного кэширования, убедитесь, что на вкладке ДополнительноРедактора преобразования «Уточняющий запрос» очищены все параметры.
  • Частичное кэширование, при котором преобразование «Уточняющий запрос» определяет размер кэша, который будет загружен ссылочными данными. Этот параметр доступен только при соединениях, поддерживающих доступ по ключу. Чтобы настроить преобразование «Уточняющий запрос» для использования частичного кэширования, на вкладке ДополнительноРедактора преобразования «Уточняющий запрос» выберите Включить ограничение памяти, после чего выберите параметр Включить кэширование или Изменить инструкцию SQL, либо оба параметра — Включить кэширование и Изменить инструкцию SQL.
  • Без кэширования, в котором обращение к эталонному набору данных происходит путем обращения к каждой строке набора строк. Чтобы настроить преобразование «Уточняющий запрос» на отказ от использования кэширования, на вкладке Дополнительноредактора преобразования «Уточняющий запрос» выберите параметр Включить ограничение памяти и очистите все остальные параметры.

Дополнительные сведения о вкладке Дополнительно см. в разделе Редактор преобразования «Уточняющий запрос» (вкладка «Дополнительно»).

В преобразовании «Уточняющий запрос», настроенном для использования частичного кэширования или не использующем кэширование вообще, произойдет сбой, если уточняющий запрос использует столбцы, содержащие значения NULL. Избежать этого можно, изменив вручную инструкцию SQL так, чтобы она содержала условие OR ISNULL(ColumnName). Если использовано полное предварительное кэширование, операция поиска пройдет успешно.

ms141821.note(ru-ru,SQL.90).gifПримечание.
Если возможно, избегайте использования в операциях поиска столбцов, которые могут содержать значения NULL. Если столбец содержит значения NULL, настройте преобразование «Уточняющий запрос» так, чтобы использовать выход ошибок, который направляет строки, не имеющие соответствующих строк в ссылочной таблице, в отдельный выход преобразования. Также рассмотрите вариант использования полного кэширования, которое поддерживает операции поиска со значениями NULL.

Службы Integration Services и SQL Server различаются способом сравнения строк. Если преобразование «Уточняющий запрос» настроено на использование полного предварительного кэширования, то службы Integration Services проводят сравнение уточняющего запроса в кэше. В противном случае операция уточняющего запроса использует параметризованную инструкцию SQL, и сравнение уточняющего запроса выполняется SQL Server. Это означает, что преобразование «Уточняющий запрос» может возвращать различное количество результатов поиска из одной и той же таблицы уточняющих запросов в зависимости от типа кэша.

Кэширующая инструкция SQL

Преобразование «Уточняющий запрос» может быть настроено для использования кэширующей инструкции SQL. Инструкция SQL может выбрать подмножество эталонного набора данных, ограничив его размер. Если размер эталонного набора данных очень большой, использование инструкции кэширования ограничит объем памяти, использованной ссылочным набором данных.

Кэширующая инструкция SQL может использовать значения или параметры в своем предложении WHERE. Параметры сопоставляются с входными столбцами и обновляются значениями входных столбцов во время выполнения.

Устранение неполадок, связанных с преобразованием «Уточняющий запрос»

Начиная с Microsoft SQL Server 2005 с пакетом обновления 2 (SP2), появилась возможность для занесения в журнал вызовов, которые преобразование «Уточняющий запрос» делает к внешним поставщикам данных. Эта новая возможность протоколирования может быть использована для устранения неполадок заполнения кэша из внешних источников данных, которые выполняются преобразованием «Уточняющий запрос». Для протоколирования вызовов, которые преобразование «Уточняющий запрос» совершает к внешнему поставщику данных, необходимо разрешить ведение журнала пакета и выбрать событие Диагностика на уровне пакета. Дополнительные сведения см. в разделе Устранение неполадок выполнения пакетов.

Настройка преобразования «Уточняющий запрос»

Свойства задаются через конструктор служб SSIS или программно.

Дополнительные сведения о свойствах, которые можно установить в диалоговом окне Редактор преобразования «Уточняющий запрос», см. в следующих разделах:

Диалоговое окно Расширенный редактор содержит свойства, которые можно установить с помощью программных средств. Дополнительные сведения о свойствах, которые можно задать в диалоговом окне Расширенный редактор или программно, см. в следующих разделах:

Дополнительные сведения о настройке свойств см. в следующих разделах:

См. также

Основные понятия

Преобразование «Нечеткий уточняющий запрос»
Преобразование «Уточняющий запрос термина»
Создание потока данных пакета
Преобразования служб Integration Services

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Новое содержимое
  • Добавлены сведения о том, как с помощью пользовательского интерфейса включить различные типы кэширования.
  • Добавлены сведения о том, как SQL Server 2005 с пакетом обновления 2 добавляет новые сообщения в журнал, что позволяет пользователям устранять неполадки вызовов, которые преобразование выполняет к внешним поставщикам данных.

14 апреля 2006 г.

Новое содержимое
  • Описана возможность задавать размер кэша для 32-разрядных и 64-разрядных сред.
  • Добавлены сведения о влиянии использования различных типов кэшей.

5 декабря 2005 г.

Измененное содержимое
  • Более ясное описание механизма сопоставления.