Não é possível preparar a inserção em massa do SSIS para inserção de dados em sistemas habilitados para UAC
Este artigo ajuda você a resolver o problema que ocorre quando você tenta executar um pacote SSIS em sistemas em que o UAC (Controle de Conta de Usuário) está habilitado.
Versão original do produto: SQL Server
Número original do KB: 2009672
Sintomas
Considere o cenário a seguir.
Você cria um pacote do SQL Server Integration Services (SSIS) que tem um componente Destino do SQL Server em uma Tarefa de Fluxo de Dados.
Você tenta executar este pacote em sistemas em que o UAC (Controle de Conta de Usuário) está habilitado (por exemplo, Vista ou Windows 7) usando um dos seguintes métodos:
- Estúdio de Desenvolvimento de Business Intelligence (BIDS)
- Pesquisador de Objetos do SSMS (SQL Server Management Studio)
- DTExec.exe
- DTExecUI.exe
Nesse cenário, você pode receber uma mensagem de erro semelhante à seguinte:
Erro de Destino do SQL Server]: não é possível preparar a inserção em massa do SSIS para inserção de dados. [SSIS. Pipeline] Erro: o componente "Destino do SQL Server" falhou na fase de pré-execução e retornou o código de erro 0xC0202071.
Observação
Você não receberá esse erro se executar o pacote na conta de administrador integrada criada durante a instalação do sistema operacional. Mas você receberá essa mensagem para qualquer outro usuário, incluindo aqueles que são membros do grupo Administradores locais.
O problema não ocorre quando você executa o mesmo pacote SSIS como um trabalho do SQL Server Agent.
Após a instalação do SQL 2008 Service Pack 2, o texto do DTS_E_BULKINSERTAPIPREPARATIONFAILED de erro (0xC0202071) foi alterado para: Não é possível copiar dados em massa. Talvez seja necessário executar este pacote como administrador.
Essa alteração foi feita na tentativa de facilitar a compreensão da ação corretiva necessária, conforme descrito na seção de resolução deste KB.
Causa
Em sistemas em que o UAC está habilitado, quando um aplicativo (como o SSIS) é iniciado por uma conta que é membro do grupo Administradores, ele obtém dois tokens de segurança, um token com privilégios baixos e outro com privilégios elevados. O token elevado só é usado quando o aplicativo é executado explicitamente em uma conta de Administrador, escolhendo a opção Executar como Administrador . Por padrão, o SSIS sempre usa o token com privilégios baixos, resultando em uma falha ao se conectar a um Destino SQL.
Solução
Use um dos seguintes métodos para contornar o problema:
Se você estiver executando o pacote no SQL Server Management Studio (SSMS) ou no Business Intelligence Development Studio (BIDS) ou DTExecUI.exe, inicie essas ferramentas na conta de administrador com privilégios elevados. Para fazer isso, clique em Iniciar, aponte para Todos os Programas, aponte para SQL Server 2005 ou SQL Server 2008, clique com o botão direito do mouse na ferramenta que você está usando e clique em Executar como administrador. Isso inicia o aplicativo com privilégios elevados da conta de Administrador Interno e o pacote é executado com êxito.
Da mesma forma, se você estiver executando o pacote usando DTExec.exe inicie-o em um prompt de comando com privilégios elevados. Você pode iniciar o prompt de comando com privilégios elevados clicando em Iniciar, em Todos os Programas, em Acessórios, com o botão direito do mouse em Prompt de Comando e em Executar como administrador.
Observação
Se você não fizer logon no computador como administrador, será solicitado que você forneça a conta de administrador. Quando for solicitado que você forneça a conta de administrador, digite o nome de usuário e a senha do administrador na caixa de diálogo Controle de Conta de Usuário. Depois, clique em OK.
Substitua os componentes de Destino do SQL Server nas Tarefas de Fluxo de Dados que estão falhando por componentes de Destino OLE DB que apontam para o mesmo gerenciador de conexões do SQL Server.
Use uma conta que não seja membro do grupo Administradores local depois de atribuir o direito de usuário Criar Objetos Globais a essa conta. Para fazer isso, siga estas etapas:
- Clique em Iniciar, aponte para Ferramentas Administrativas e clique em Política de Segurança Local.
- Expanda Políticas Locais e clique em Atribuição de Direitos de Usuário.
- No painel direito, clique duas vezes em Criar objetos globais.
- Na caixa de diálogo Configuração de Diretiva de Segurança Local, clique em Adicionar.
- Na caixa de diálogo Selecionar Usuários ou Grupo , clique nas contas de usuário que você deseja adicionar, clique em Adicionar e em OK.
- Clique em OK.
Observação
Ao usar uma conta que não é membro do grupo Administradores local, o UAC não entra em ação.