Origem de OLE DB

A origem de OLE DB extrai dados de uma variedade de bancos de dados relacionais compatíveis com OLE DB usando uma tabela de banco de dados, uma exibição ou um comando SQL. Por exemplo, a origem de OLE DB pode extrair dados de tabelas em Microsoft Office Access ou bancos de dados do SQL Server.

ObservaçãoObservação

Se a fonte de dados for Microsoft Office Excel 2007, ela exigirá um gerenciador de conexões diferente de versões anteriores do Excel. Para obter mais informações, consulte Como se conectar a uma pasta de trabalho do Excel.

A origem de OLE DB fornece quatro modos de acesso a dados diferentes para extrair dados:

  • Uma tabela ou exibição.

  • Uma tabela ou exibição especificada em uma variável.

  • Os resultados de uma instrução SQL. A consulta pode ser uma consulta parametrizada.

  • Os resultados de uma instrução SQL armazenados em uma variável.

Se você usar uma consulta parametrizada, poderá mapear variáveis para parâmetros para especificar os valores de parâmetros individuais nas instruções SQL.

Essa origem usa um gerenciador de conexões OLE DB para se conectar a uma fonte de dados e o gerenciador de conexões especifica o provedor OLE DB a ser usado. Para obter mais informações, consulte Gerenciador de conexões OLE DB.

Um projeto do Integration Services também fornece o objeto de fonte de dados do qual você pode criar um gerenciador de conexões OLE DB, disponibilizando as fontes de dados para a origem de OLE DB. Para obter mais informações, consulte Fonte de dados (SSIS) e Exibição da fonte de dados (SSIS).

Dependendo do provedor OLE DB, algumas limitações se aplicam à origem de OLE DB:

  • O provedor Microsoft OLE DB para Oracle não dá suporte aos tipos de dados BLOB, CLOB, NCLOB, BFILE ou UROWID e a origem de OLE DB não pode extrair dados de tabelas que contenham colunas com esses tipos de dados.

  • Os provedores IBM OLE DB DB2 e Microsoft OLE DB DB2 não dão suporte ao uso de um comando SQL que chame um procedimento armazenado. Quando esse tipo de comando é usado, a origem de OLE DB não pode criar os metadados de coluna e, como resultado, os componentes do fluxo de dados que seguem a origem de OLE DB no fluxo de dados não possuem dados de coluna disponíveis e a execução do fluxo de dados falha.

A origem de OLE DB tem uma saída regular e uma saída de erro.

Usando instruções SQL parametrizadas

A origem de OLE DB pode usar uma instrução SQL para extrair dados. A instrução pode ser uma instrução SELECT ou EXEC.

A origem de OLE DB usa um gerenciador de conexões OLE DB para se conectar à fonte de dados da qual ela extrai dados. Dependendo do provedor que o gerenciador de conexões OLE DB usa e do RDBMS ao qual o gerenciador de conexões se conecta, diferentes regras se aplicam à nomenclatura e listagem de parâmetros. Se os nomes de parâmetros forem retornados do RDBMS, você poderá usá-los para mapear parâmetros em uma lista de parâmetros em uma instrução SQL; caso contrário, os parâmetros serão mapeados para o parâmetro na instrução SQL por suas posições na lista. Os tipos de nomes de parâmetros que têm suporte variam de acordo com o provedor. Por exemplo, alguns provedores exigem que você use os nomes de variáveis ou colunas, enquanto que outros exigem o uso de nomes simbólicos como 0 ou Param0. Você deve consultar a documentação específica do provedor para obter informações sobre os nomes dos parâmetros a serem usados nas instruções SQL.

Quando você usa um gerenciador de conexões OLE DB, não pode usar subconsultas parametrizadas, pois a origem de OLE DB não pode derivar informações de parâmetros através do provedor OLE DB. No entanto, você pode usar uma expressão para concatenar os valores de parâmetros na cadeia de consulta e definir a propriedade SqlCommand da origem. No Designer SSIS, você configura uma origem de OLE DB usando a caixa de diálogo Editor de Origem de OLE DB e mapeia os parâmetros para variáveis na caixa de diálogo Definir Parâmetro de Consulta.

Especificando parâmetros usando posições ordinais

Se nenhum nome de parâmetro for retornado, a ordem na qual os parâmetros serão listados na lista Parâmetros na caixa de diálogo Definir Parâmetro de Consulta controlará à qual marcador de parâmetro eles estarão mapeados em tempo de execução. O primeiro parâmetro na lista é mapeado para o primeiro ? na instrução SQL, o segundo para o segundo ? e assim por diante.

A seguinte instrução SQL seleciona linhas da tabela Produto no banco de dados AdventureWorks2008R2. O primeiro parâmetro na lista Mapeamentos é mapeado para o primeiro parâmetro na coluna Cor, o segundo parâmetro para a coluna Tamanho.

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

Os nomes de parâmetros não têm nenhum efeito. Por exemplo, se um parâmetro tiver o mesmo nome da coluna na qual ele se aplica, mas não estiver na posição ordinal correta na lista Parâmetros, o mapeamento de parâmetro que ocorre em tempo de execução usará a posição ordinal do parâmetro, não seu nome.

O comando EXEC geralmente exige que você use os nomes das variáveis que fornecem valores de parâmetros no procedimento como nomes de parâmetros.

Especificando parâmetros usando nomes

Se os nomes de parâmetros reais forem retornados do RDBMS, os parâmetros usados por uma instrução SELECT e EXEC serão mapeados por nome. Os nomes de parâmetros devem corresponder aos nomes que o procedimento armazenado, executado pela instrução SELEC ou EXEC, espera.

A seguinte instrução SQL executa o procedimento armazenado uspGetWhereUsedProductID, disponível no banco de dados AdventureWorks2008R2.

EXEC uspGetWhereUsedProductID ?, ?

O procedimento armazenado espera as variáveis, @StartProductID e @CheckDate, para fornecer os valores de parâmetros. A ordem na qual os parâmetros aparecem na lista Mapeamentos é irrelevante. O único requisito é que os nomes de parâmetros correspondam aos nomes de variáveis no procedimento armazenado, incluindo o sinal @.

Mapeando parâmetros para variáveis

Os parâmetros são mapeados para variáveis que fornecem os valores de parâmetros em tempo de execução. As variáveis geralmente são definidas pelo usuário, embora você também possa usar as variáveis de sistema que o Integration Services fornece. Se você usar variáveis definidas pelo usuário, defina o tipo de dados que seja compatível com o tipo de dados da coluna à qual o parâmetro mapeado faz referência. Para obter mais informações, consulte Variáveis do Integration Services.

Solucionando problemas da origem de OLE.DB

Você pode registrar as chamadas que a origem de OLE DB faz para provedores de dados externos. Você pode usar essa capacidade de registro para solucionar problemas de carregamento de dados de fontes de dados externas que a origem de OLE DB executa. Para registrar as chamadas que a origem de OLE DB faz aos provedores de dados externos, habilite o registro de pacotes e selecione o evento Diagnóstico no nível de pacotes. Para obter mais informações, consulte Solucionando problemas de execução do pacote.

Configurando a origem de OLE DB

Você pode definir propriedades programaticamente ou por meio do Designer SSIS.

Para obter mais informações sobre as propriedades que podem ser definidas na caixa de diálogo Editor de Origem de OLE DB, clique em um dos seguintes tópicos:

A caixa de diálogo Editor Avançado reflete as propriedades que podem ser definidas programaticamente. Para obter mais informações sobre as propriedades que podem ser definidas na caixa de diálogo Editor Avançado ou programaticamente, clique em um dos seguintes tópicos:

Para obter mais informações sobre como definir as propriedades, clique em um dos seguintes tópicos:

Recursos externos

Artigo do Wiki, SSIS with Oracle Connectors, em social.technet.microsoft.com.

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os downloads, artigos, exemplos e vídeos mais recentes da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN ou TechNet:

Para receber uma notificação automática sobre essas atualizações, assine os feeds RSS disponíveis na página.