Partilhar via


Tarefa Executar SQL

A tarefa Executar SQL executa instruções SQL ou procedimentos armazenados a partir de um pacote. A tarefa pode conter uma única instrução SQL ou várias instruções SQL que são executadas em seqüência. Você pode usar a tarefa Executar SQL para os seguintes propósitos:

  • Truncar uma tabela ou exibição em preparação para inserção de dados.

  • Criar, alterar e descartar objetos de banco de dados como tabelas e exibições.

  • Recriar tabelas de fatos e de dimensões antes de carregar dados nelas.

  • Executar procedimentos armazenados.

  • Salvar o conjunto de linhas retornado de uma consulta em uma variável.

Você pode configurar a tarefa Executar SQL das seguintes formas:

  • Especifique o tipo de gerenciador de conexões a ser usado para conectar-se a um banco de dados.

  • Especifique o tipo de conjunto de resultados retornado pela instrução SQL.

  • Especifique um tempo limite para as instruções SQL.

  • Especifique a origem da instrução SQL.

  • Indique se a tarefa ignora a fase de preparação para a instrução SQL.

  • Se você usar o tipo de conexão ADO, indique se a instrução SQL é um procedimento armazenado. Para outros tipos de conexão, essa propriedade é somente leitura e seu valor é sempre false.

A tarefa Executar SQL pode ser usada em combinação com os contêineres Loop Foreach e Loop For para executar várias instruções SQL. Esses contêineres implementam fluxos de controle repetitivos em um pacote e eles podem executar a tarefa Executar SQL várias vezes. Por exemplo, usando o contêiner Loop Foreach, um pacote pode enumerar arquivos em uma pasta e executar uma tarefa Executar SQL várias vezes para executar a instrução SQL armazenada em cada arquivo.

Conectando-se a uma fonte de dados

A tarefa Executar SQL pode usar tipos diferentes de gerenciadores de conexões para se conectar à fonte de dados onde a instrução SQL ou o procedimento armazenado é executado. A tarefa pode usar os tipos de conexão listados na tabela a seguir.

Criando instruções SQL

A origem das instruções SQL usada por essa tarefa pode ser uma propriedade de tarefa que contém uma instrução, uma conexão com um arquivo que contém uma ou várias instruções ou o nome de uma variável que contém uma instrução. As instruções SQL devem ser gravadas na linguagem do sistema de gerenciamento de banco de dados de origem (DBMS). Para obter mais informações, consulte Usando consultas em pacotes.

Se as instruções SQL estiverem armazenadas em um arquivo, a tarefa usará um gerenciador de conexões de arquivo para se conectar ao arquivo. Para obter mais informações, consulte Gerenciador de conexões de arquivos.

No Designer SSIS, você pode usar a caixa de diálogo Editor da Tarefa Executar SQL para digitar instruções SQL ou usar o Construtor de Consultas, uma interface de usuário gráfica para criar consultas SQL. Para obter mais informações, consulte Editor da Tarefa Executar SQL (página Geral) e Construtor de Consultas.

ObservaçãoObservação

Instruções SQL válidas gravadas fora da tarefa Executar SQL talvez não sejam analisadas com êxito pela tarefa Executar SQL.

Enviando várias instruções em um lote

Se várias instruções forem incluídas em uma tarefa Executar SQL, é possível agrupá-las e executá-las como um lote. Para sinalizar o final de um lote, use o comando GO. Todas as instruções SQL entre dois comandos GO são enviadas em um lote para o provedor OLE DB a fim de serem executadas. O comando SQL pode incluir vários lotes separados por comandos GO.

Há restrições sobre os tipos de instruções SQL que podem ser agrupados em um lote. Para obter mais informações, consulte Lotes de instruções.

Se a tarefa Executar SQL executar um lote de instruções SQL, as seguintes regras se aplicam ao lote:

  • Só uma instrução pode retornar um conjunto de resultados e deve ser a primeira instrução no lote.

  • Se o conjunto de resultados usar associações de resultado, as consultas devem retornar o mesmo número de colunas. Se as consultas retornarem um número diferente de colunas, a tarefa falhará. Porém, mesmo que a tarefa falhe, as consultas executadas, como DELETE ou INSERT, podem ser executadas com êxito.

  • Se as associações de resultado usarem nomes de coluna, a consulta deve retornar colunas que tenham os mesmos nomes do conjunto de resultados usado na tarefa. Se as colunas estiverem ausentes, a tarefa falhará.

  • Se a tarefa usar associações de parâmetro, todas as consultas do lote devem ter o mesmo número e os mesmos tipos de parâmetros.

Executando comandos SQL parametrizados

As instruções SQL e os procedimentos armazenados freqüentemente usam parâmetros de entrada, parâmetros de saída e códigos de retorno. A tarefa Executar SQL suporta os tipos de parâmetro Input, Output e ReturnValue. Use o tipo Input para parâmetros de entrada, Output para parâmetros de saída e ReturnValue para códigos de retorno.

ObservaçãoObservação

Você só poderá usar parâmetros em uma tarefa Executar SQL se o provedor de dados der suporte a eles.

Para obter informações sobre como usar parâmetros e códigos de retorno na tarefa Executar SQL, consulte Trabalhando com parâmetros e códigos de retorno na tarefa Executar SQL.

Especificando um tipo de conjunto de resultados

Dependendo do tipo de comando SQL, um conjunto de resultados pode ou não ser retornado para a tarefa Executar SQL. Por exemplo, uma instrução SELECT normalmente retorna um conjunto de resultados, mas uma instrução INSERT não. O conjunto de resultados de uma instrução SELECT pode conter nenhuma linha, uma linha ou muitas linhas. Os procedimentos armazenados também podem retornar um valor inteiro, chamado de código de retorno, para indicar o status de execução do procedimento. Nesse caso, o conjunto de resultados consiste em uma única linha.

Para obter informações sobre como recuperar conjuntos de resultados de comandos SQL na tarefa Executar SQL, consulte Trabalhando com conjuntos de resultados na tarefa Executar SQL.

Entradas de log personalizadas disponíveis na tarefa Executar SQL

A tabela a seguir descreve a entrada de log personalizada da tarefa Executar SQL. Para obter mais informações, consulte Implementando logs em pacotes e Mensagens personalizadas para log.

Entrada de log

Descrição

ExecuteSQLExecutingQuery

Fornece informações sobre as fases de execução da instrução SQL. As entradas de log são gravadas quando a tarefa adquire conexão com o banco de dados, quando a tarefa começa a preparar a instrução SQL e depois que a execução da instrução SQL é concluída. A entrada de log da fase de preparação inclui a instrução SQL usada pela tarefa.

Solucionando problemas da tarefa Executar SQL

Você pode registrar as chamadas que a tarefa Executar SQL faz para provedores de dados externos. É possível usar esse recurso de registro para solucionar problemas dos comandos SQL executados pela tarefa Executar SQL. Para registrar as chamadas que a tarefa Executar SQL 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.

Às vezes um comando SQL ou procedimento armazenado retorna vários conjuntos de resultados. Esses conjuntos de resultados incluem não só conjuntos de linhas que resultam de consultas SELECT, mas também valores únicos que resultam de erros das instruções RAISERROR ou PRINT. A tarefa poderá ignorar ou não os erros nos conjuntos de resultados que ocorrem após o primeiro conjunto de resultados dependendo do tipo de gerenciador de conexões usado:

  • Quando você usa gerenciadores de conexões OLE DB e ADO, a tarefa ignora os conjuntos de resultados que ocorrem após o primeiro conjunto de resultados. Portanto, com esses gerenciadores de conexões, a tarefa ignora um erro retornado por um comando SQL ou um procedimento armazenado quando o erro não faz parte do primeiro conjunto de resultados.

  • Quando você usa gerenciadores de conexões ODBC e ADO.NET, a tarefa não ignora os conjuntos de resultados que ocorrem após o primeiro conjunto de resultados. Com esses gerenciadores de conexões, a tarefa falhará quando ocorrer um erro que não seja do primeiro conjunto de resultados.

Configurando a tarefa Executar SQL

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

Para obter mais informações sobre as propriedades que podem ser definidas no Designer SSIS, clique em um dos seguintes tópicos:

Para obter mais informações sobre como definir essas propriedades no Designer SSIS, clique no seguinte tópico:

Configurando a tarefa Executar SQL programaticamente

Para obter mais informações sobre como definir programaticamente essas propriedades, clique no seguinte tópico:

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

Para obter os mais recentes downloads, artigos, exemplos e vídeos 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 das atualizações, assine os feeds RSS disponíveis na página.