L’exécution d’un package SSIS cesse de répondre lorsque vous activez des transactions DTC pour un package dans Microsoft SQL Server
Cet article vous aide à résoudre le problème dans lequel l’exécution d’un package Microsoft SQL Server Integration Services (SSIS) cesse de répondre si vous activez les transactions DTC pour le package et activez la ValidateExternalMetadata
propriété pour un composant dans une tâche de flux de données.
Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 2253391
Symptômes
Prenons l’exemple du scénario suivant :
- Vous créez un package SSIS dans SQL Server.
- Le package SSIS contient une tâche de flux de données et d’autres tâches.
- La
TransactionOption
propriété du package SSIS est définie sur Obligatoire pour utiliser des transactions DTC. - Les autres tâches s’exécutent dans une transaction DTC avant l’exécution de la tâche de flux de données.
- Vous ajoutez un composant à la tâche de flux de données.
- La
ValidateExternalMetadata
propriété d’un composant de flux de données est définie sur True. - La tâche de flux de données contient un composant Ole DB Destination dont le mode d’accès aux données est défini sur Table ou vue, ou sur Nom de table ou variable de nom de vue.
Lorsque vous exécutez le package dans ce scénario, l’exécution cesse de répondre. En outre, si vous déboguez le package SSIS dans Visual Studio, vous recevez des messages qui ressemblent à ce qui suit dans l’affichage Progression :
Démarrage du package SSIS « Package.dtsx ».
Informations : 0x4004300A à Data Flow Task, DTS. Pipeline : la phase de validation commence. Informations : 0x4001100A dans Package : Démarrage de la transaction distribuée pour ce conteneur. Informations : 0x4004300A à Data Flow Task, DTS. Pipeline : la phase de validation commence.
Cause
Ce problème se produit parce que la connexion dans le flux de données n’est pas inscrite dans la transaction DTC. Cela entraîne le blocage de l’exécution de la sp_cursoropen
procédure stockée. Il s’agit d’une fonctionnalité de conception, car une connexion ne peut pas être inscrite dans une transaction DTC pendant le processus de validation. Dans le scénario décrit dans la section Symptômes , le processus de validation d’un composant de flux de données est bloqué lorsque vous exécutez le package, car la connexion dans la tâche de flux de données n’a pas été inscrite dans la transaction DTC.
Résolution
Pour résoudre ce problème, appliquez l’une des méthodes suivantes :
Définissez
ValidateExternalMetadata
pour tous les composants de la tâche de flux de données sur False.Définissez le mode d’accès aux données du composant Ole DB Destination sur l’un des modes suivants :
- Table ou vue - chargement rapide
- Nom de table ou variable de nom de vue - chargement rapide
- Commande SQL
Plus d’informations
Le mode d’accès aux données Table ou Affichage est bloqué, mais les autres modes d’accès aux données ne sont pas bloqués, car les différentes commandes émises par le fournisseur de données pour chaque mode d’accès aux données. Pour obtenir plus d’informations sur ce problème, utilisez SQL Server Profiler pour afficher les différentes commandes émises par le fournisseur de données.
Pour plus d’informations sur l’utilisation des SQL Server Profiler, consultez modèles et autorisations SQL Server Profiler.
Pour plus d’informations sur la résolution des problèmes liés aux packages SSIS, consultez Résolution des problèmes de développement de packages.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour