Impossible de préparer l’insertion en bloc SSIS pour l’insertion de données sur les systèmes compatibles UAC
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’exécuter un package SSIS sur les systèmes où le contrôle de compte d’utilisateur (UAC) est activé.
Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 2009672
Symptômes
Examinez le cas suivant :
Vous créez un package SQL Server Integration Services (SSIS) qui a un composant de destination SQL Server au sein d’une tâche de flux de données.
Vous essayez d’exécuter ce package sur les systèmes où le contrôle de compte d’utilisateur (UAC) est activé (par exemple Vista ou Windows 7) à l’aide de l’une des méthodes suivantes :
- Business Intelligence Development Studio (BIDS)
- Explorateur d’objets SQL Server Management Studio (SSMS)
- DTExec.exe
- DTExecUI.exe
Dans ce scénario, vous pouvez obtenir un message d’erreur similaire à ce qui suit :
Erreur de destination SQL Server : Impossible de préparer l’insertion en bloc SSIS pour l’insertion de données. [SSIS. Erreur] Erreur : le composant « Destination SQL Server » a échoué la phase de préexécutation et le code d’erreur retourné 0xC0202071.
Note
Cette erreur ne s’affiche pas si vous exécutez le package sous le compte Administrateur intégré créé lors de l’installation du système d’exploitation. Toutefois, vous recevez ce message pour tout autre utilisateur, y compris ceux qui sont membres du groupe Administrateurs locaux.
Le problème ne se produit pas lorsque vous exécutez le même package SSIS qu’un travail SQL Server Agent.
Une fois SQL 2008 Service Pack 2 installé, le texte de l’erreur DTS_E_BULKINSERTAPIPREPARATIONFAILED (0xC0202071) a été modifié en : Impossible de copier en bloc les données. Vous devrez peut-être exécuter ce package en tant qu’administrateur.
Cette modification a été apportée pour faciliter la compréhension de l’action corrective nécessaire, comme décrit dans la section de résolution de cette Base de connaissances.
Cause
Sur les systèmes où L’UAC est activé, lorsqu’une application (comme SSIS) est lancée par un compte membre du groupe Administrateurs, il obtient deux jetons de sécurité, un jeton à privilège faible et un autre un jeton avec élévation de privilèges. Le jeton avec élévation de privilèges est utilisé uniquement lorsque l’application est exécutée explicitement sous un compte d’administrateur en choisissant l’option Exécuter en tant qu’administrateur . Par défaut, SSIS utilise toujours le jeton à privilèges faibles, ce qui entraîne un échec lors de la connexion à une destination SQL.
Résolution
Utilisez l’une des méthodes suivantes pour contourner le problème :
Si vous exécutez le package à partir de SQL Server Management Studio (SSMS) ou business Intelligence Development Studio (BIDS) ou DTExecUI.exe, lancez ces outils sous le compte Administrateur avec élévation de privilèges. Pour ce faire, cliquez sur Démarrer, pointez sur Tous les programmes, pointez sur SQL Server 2005 ou SQL Server 2008, cliquez avec le bouton droit sur l’outil que vous utilisez, puis cliquez sur Exécuter en tant qu’administrateur. Cette opération lance l’application avec des privilèges élevés du compte Administrateur intégré et le package s’exécute correctement.
De même, si vous exécutez le package à l’aide de DTExec.exe la lancer à partir d’une invite de commandes avec élévation de privilèges. Vous pouvez démarrer l’invite de commandes avec élévation de privilèges en cliquant sur Démarrer, sur Tous les programmes, sur Accessoires, sur Invite de commandes, puis sur Exécuter en tant qu’administrateur.
Note
Si vous ne vous connectez pas à l’ordinateur en tant qu’administrateur, vous êtes invité à fournir le compte d’administrateur. Lorsque vous êtes invité à fournir le compte d’administrateur, tapez le nom d’utilisateur et le mot de passe d’administrateur dans la boîte de dialogue Contrôle de compte d’utilisateur. Cliquez ensuite sur OK.
Remplacez les composants de destination SQL Server dans les tâches de flux de données qui échouent avec les composants de destination OLE DB qui pointent vers le même gestionnaire de connexions SQL Server.
Utilisez un compte qui n’est pas membre du groupe Administrateurs local après avoir affecté le droit d’utilisateur Créer des objets globaux à ce compte. Pour ce faire, procédez comme suit :
- Cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Stratégie de sécurité locale.
- Développez Stratégies locales, puis cliquez sur Attribution des droits utilisateur.
- Dans le volet droit, double-cliquez sur Créer des objets globaux.
- Dans la boîte de dialogue Paramètre de stratégie de sécurité locale, cliquez sur Ajouter.
- Dans la boîte de dialogue Sélectionner des utilisateurs ou groupe , cliquez sur les comptes d’utilisateur que vous souhaitez ajouter, cliquez sur Ajouter, puis sur OK.
- Cliquez sur OK.
Note
Lorsque vous utilisez un compte qui n’est pas membre du groupe Administrateurs local, L’UAC n’entre pas en jeu.