No se puede preparar la inserción masiva de SSIS para la inserción de datos en sistemas habilitados para UAC
Este artículo le ayuda a resolver el problema que se produce al intentar ejecutar un paquete SSIS en sistemas en los que el Control de cuentas de usuario (UAC) está habilitado.
Versión del producto original: SQL Server
Número de KB original: 2009672
Síntomas
Considere el caso siguiente:
Cree un paquete de SQL Server Integration Services (SSIS) que tenga un componente de destino de SQL Server dentro de una tarea flujo de datos.
Intenta ejecutar este paquete en sistemas en los que el Control de cuentas de usuario (UAC) está habilitado (por ejemplo, Vista o Windows 7) mediante uno de los métodos siguientes:
- Estudio de desarrollo de inteligencia empresarial (BIDS)
- Explorador de objetos de SQL Server Management Studio (SSMS)
- DTExec.exe
- DTExecUI.exe
En este escenario, puede obtener un mensaje de error similar al siguiente:
Error de destino de SQL Server: no se puede preparar la inserción masiva de SSIS para la inserción de datos. [SSIS. Canalización] Error: el componente "Destino de SQL Server" produjo un error en la fase de ejecución previa y devolvió el código de error 0xC0202071.
Nota:
No recibirá este error si ejecuta el paquete en la cuenta de administrador integrada que se crea durante la instalación del sistema operativo. Pero recibirá este mensaje para cualquier otro usuario, incluidos los miembros del grupo Administradores locales.
El problema no se produce cuando se ejecuta el mismo paquete de SSIS que un trabajo de Agente SQL Server.
Después de instalar SQL 2008 Service Pack 2, el texto del error DTS_E_BULKINSERTAPIPREPARATIONFAILED (0xC0202071) se ha cambiado a: No se pueden copiar datos de forma masiva. Es posible que tenga que ejecutar este paquete como administrador.
Este cambio se realizó en intentos de facilitar la comprensión de la acción correctiva necesaria, tal como se describe en la sección de resolución de esta KB.
Causa
En los sistemas en los que UAC está habilitado, cuando una aplicación (como SSIS) se inicia mediante una cuenta que es miembro del grupo Administradores, obtiene dos tokens de seguridad, uno un token con pocos privilegios y otro un token con privilegios elevados. El token con privilegios elevados solo se usa cuando la aplicación se ejecuta explícitamente en una cuenta de administrador seleccionando la opción Ejecutar como administrador . De forma predeterminada, SSIS siempre usa el token con pocos privilegios, lo que produce un error al conectarse a un destino de SQL.
Solución
Use uno de los métodos siguientes para solucionar el problema:
Si ejecuta el paquete desde SQL Server Management Studio (SSMS) o Business Intelligence Development Studio (BIDS) o DTExecUI.exe, inicie esas herramientas en la cuenta de administrador con privilegios elevados. Para ello, haga clic en Inicio, seleccione Todos los programas, SQL Server 2005 o SQL Server 2008, haga clic con el botón derecho en la herramienta que está usando y, a continuación, haga clic en Ejecutar como administrador. Esto inicia la aplicación con privilegios elevados de la cuenta de administrador integrada y el paquete se ejecuta correctamente.
Del mismo modo, si ejecuta el paquete mediante DTExec.exe iniciarlo desde un símbolo del sistema con privilegios elevados. Para iniciar el símbolo del sistema con privilegios elevados, haga clic en Inicio, todos los programas, Accesorios, símbolo del sistema y, a continuación, haga clic en Ejecutar como administrador.
Nota:
Si no inicia sesión en el equipo como administrador, se le pedirá que proporcione la cuenta de administrador. Cuando se le pida que proporcione la cuenta de administrador, escriba el nombre de usuario de administrador y la contraseña en el cuadro de diálogo Control de cuentas de usuario. A continuación, haga clic en Aceptar.
Reemplace los componentes de destino de SQL Server en las tareas de flujo de datos que producen errores con los componentes de destino de OLE DB que apuntan al mismo administrador de conexiones de SQL Server.
Use una cuenta que no sea miembro del grupo administradores local después de asignar el derecho de usuario Crear objetos globales a esa cuenta. Para ello, siga estos pasos:
- Haga clic en Inicio, seleccione Herramientas administrativasy, a continuación, haga clic en Directiva de seguridad local.
- Expanda Directivas locales y, a continuación, haga clic en Asignación de derechos de usuario.
- En el panel derecho, haga doble clic en Crear objetos globales.
- En el cuadro de diálogo Configuración de directiva de seguridad local, haga clic en Agregar.
- En el cuadro de diálogo Seleccionar usuarios o grupo , haga clic en las cuentas de usuario que desea agregar, haga clic en Agregar y, a continuación, haga clic en Aceptar.
- Haga clic en Aceptar.
Nota:
Cuando se usa una cuenta que no es miembro del grupo de administradores local, UAC no entra en juego.