Источник OLE DB

Источник OLE DB извлекает данные из различных реляционных баз данных, совместимых с OLE DB, с помощью таблицы базы данных, представления или команды SQL. Например, источник OLE DB может извлекать данные из таблиц в базах данных Microsoft Office Access или SQL Server.

Источник OLE DB предоставляет четыре разных режима доступа к данным для извлечения данных:

  • Таблица или представление.

  • Таблица или представление, указанное в переменной.

  • Результаты инструкции SQL. Запрос может быть параметризованным запросом.

  • Результаты инструкции SQL, хранящейся в переменной.

Замечание

При использовании инструкции SQL для вызова хранимой процедуры, возвращающей результаты из временной таблицы, используйте параметр WITH RESULT SETS для определения метаданных результирующего набора.

При использовании параметризованного запроса можно сопоставить переменные с параметрами, чтобы указать значения для отдельных параметров в инструкциях SQL.

Этот источник использует диспетчер соединений OLE DB для подключения к источнику данных, и диспетчер соединений указывает, какой поставщик OLE DB использовать. Дополнительные сведения см. в разделе OLE DB Connection Manager.

Проект служб Integration Services также предоставляет объект источника данных, из которого можно создать диспетчер соединений OLE DB, делая источники данных и представления источников данных доступными для источника OLE DB.

В зависимости от поставщика OLE DB некоторые ограничения применяются к источнику OLE DB:

  • Поставщик MICROSOFT OLE DB для Oracle не поддерживает типы данных Oracle BLOB, CLOB, NCLOB, BFILE, OR UROWID и источник OLE DB не может извлекать данные из таблиц, содержащих столбцы с этими типами данных.

  • Поставщик IBM OLE DB2 и поставщик Microsoft OLE DB2 не поддерживают использование команды SQL, которая вызывает хранимую процедуру. Если используется эта команда, источник OLE DB не может создать метаданные столбца и, в результате, компоненты потока данных, следуют источнику OLE DB в потоке данных, не имеют доступных данных столбцов, и выполнение потока данных завершается ошибкой.

Источник OLE DB имеет один регулярный вывод и один вывод ошибок.

Использование параметризованных инструкций SQL

Источник OLE DB может использовать инструкцию SQL для извлечения данных. Оператор может быть инструкцией SELECT или EXEC.

Источник OLE DB использует диспетчер соединений OLE DB для подключения к источнику данных, из которого извлекается данные. В зависимости от поставщика, к которому используется диспетчер соединений OLE DB, и реляционной системы управления базами данных (RDBMS), к которой подключается диспетчер соединений, применяются различные правила к именовании и перечислению параметров. Если имена параметров возвращаются из RDBMS, можно использовать имена параметров для сопоставления параметров в списке параметров с параметрами в инструкции SQL; в противном случае параметры сопоставляются с параметром в инструкции SQL по порядковой позиции в списке параметров. Типы имен параметров, поддержка которых варьируется в зависимости от поставщика. Например, для некоторых поставщиков требуется использовать имена переменных или столбцов, в то время как некоторые поставщики требуют использования символьных имен, таких как 0 или Param0. В документации для конкретного поставщика вы увидите сведения о именах параметров, используемых в инструкциях SQL.

При использовании диспетчера соединений OLE DB нельзя использовать параметризованные вложенные запросы, так как источник OLE DB не может получать сведения о параметрах через поставщика OLE DB. Однако можно использовать выражение для объединения значений параметров в строку запроса и задания свойства SqlCommand источника. В конструкторе служб SSIS вы настраиваете источник OLE DB с помощью диалогового окна редактора исходного кода OLE DB и сопоставляете параметры с переменными в диалоговом окне "Задать параметр запроса ".

Указание параметров с помощью порядковых позиций

Если имена параметров не возвращаются, порядок, в котором параметры перечислены в списке параметров в диалоговом окне "Задать параметр запроса" , определяет, с каким маркером параметров они сопоставлены во время выполнения. Первый параметр в списке сопоставляется с первым ? в инструкции SQL, второй к второй ?, и т. д.

Следующая инструкция SQL выбирает строки из таблицы Product в базе данных AdventureWorks2012 . Первый параметр в списке сопоставлений сопоставляется с первым параметром столбца Color , вторым параметром столбца Size .

SELECT * FROM Production.Product WHERE Color = ? AND Size = ?

Имена параметров не влияют. Например, если параметр называется таким же, как столбец, к которому он применяется, но не помещается в правильное порядковое положение в списке параметров, сопоставление параметров, которое происходит во время выполнения, будет использовать порядковое положение параметра, а не имя параметра.

Команда EXEC обычно требует, чтобы в качестве имен параметров использовались имена переменных, которые предоставляют значения параметров в процедуре.

Указание параметров с помощью имен

Если фактические имена параметров возвращаются из RDBMS, параметры, используемые инструкцией SELECT и EXEC, сопоставляются по имени. Имена параметров должны совпадать с именами, которые ожидает хранимая процедура, выполняемая инструкцией SELECT или инструкцией EXEC.

Следующая инструкция SQL выполняет хранимую процедуру uspGetWhereUsedProductID , доступную в базе данных AdventureWorks2012 .

EXEC uspGetWhereUsedProductID ?, ?

Хранимая процедура ожидает переменные @StartProductID и @CheckDateпредоставляет значения параметров. Порядок отображения параметров в списке сопоставлений не имеет значения. Единственное требование заключается в том, что имена параметров соответствуют именам переменных в хранимой процедуре, включая знак @.

Сопоставление параметров с переменными

Параметры сопоставляются с переменными, которые предоставляют значения параметров во время выполнения. Переменные обычно определяются пользователем, хотя можно также использовать системные переменные, предоставляемые службами Integration Services. Если вы используете определяемые пользователем переменные, убедитесь, что тип данных соответствует типу данных, совместимого с типом данных столбца, на который ссылается сопоставленный параметр. Дополнительные сведения см. в статье Переменные в службах Integration Services (SSIS).

Устранение неполадок источника OLE DB

Вы можете регистрировать вызовы, которые источник OLE DB выполняет внешним поставщикам данных. Эту возможность ведения журнала можно использовать для устранения неполадок при загрузке данных из внешних источников данных, которые выполняет источник OLE DB. Чтобы регистрировать вызовы, которые источник OLE DB делает внешним поставщикам данных, включите ведение журнала пакетов и выберите событие диагностики на уровне пакета. Дополнительные сведения см. в разделе "Средства устранения неполадок для выполнения пакетов".

Настройка источника OLE DB

Свойства можно задать программным способом или с помощью конструктора служб SSIS.

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

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

Вики-статья , SSIS с соединителями Oracle, на social.technet.microsoft.com.

См. также

Назначение OLE DB
Переменные служб Integration Services (SSIS)
Поток данных