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 resolve 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 de KB original: 2009672
Sintomas
Considere o seguinte cenário:
Você cria um pacote do SSIS (Integration Services) SQL Server que tem um componente SQL Server Destino em uma Tarefa de Fluxo de Dados.
Você tenta executar esse 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:
- Business Intelligence Development Studio (BIDS)
- Pesquisador de Objetos (SSMS) SQL Server Management Studio
- DTExec.exe
- DTExecUI.exe
Nesse cenário, você pode receber uma mensagem de erro semelhante à seguinte:
destino SQL Server] Erro: não é possível preparar a inserção em massa do SSIS para inserção de dados. [SSIS. Erro: o componente "SQL Server Destino" 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 do Builtin que é 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 que um trabalho de SQL Server Agent.
Após a instalação do Service Pack 2 do SQL 2008, 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 esse 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.
Motivo
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 um token com privilégios baixos e outro um token elevado. O token elevado só é usado quando o aplicativo é executado explicitamente em uma conta do 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.
Resolução
Use um dos seguintes métodos para contornar o problema:
Se você estiver executando o pacote de SQL Server Management Studio (SSMS) ou Business Intelligence Development Studio (BIDS) ou DTExecUI.exe, inicie essas ferramentas sob a conta de administrador elevada. 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 iniciá-lo a partir de um prompt de comando elevado. Você pode iniciar o prompt de comando elevado clicando em Iniciar, clicar em Todos os Programas, clicar em Acessórios, clicar com o botão direito do mouse em Prompt de Comando e, em seguida, clicar 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 você for solicitado a fornecer 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 . Em seguida, clique em OK.
Substitua os componentes de destino SQL Server nas Tarefas de Fluxo de Dados que estão falhando com componentes de destino OLE DB que apontam para o mesmo SQL Server gerenciador de conexões.
Use uma conta que não seja membro do grupo administradores locais 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 da Política 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 clique em OK.
- Clique em OK.
Observação
Ao usar uma conta que não é membro do grupo de administradores locais, o UAC não entra em jogo.