CORRECTIF : Message d’erreur lorsque vous exécutez un package SQL Server 2005 Integration Services qui contienne une colonne d’un type de données BLOB dans une tâche de flux de données : « le Gestionnaire de tampons pas pu obtenir un nom de fichier temporaire. Échec de l’appel de GetTempFileName »

Microsoft distribue les correctifs de Microsoft SQL Server 2005 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2005 version du correctif.

Symptômes

Envisagez le scénario suivant.
  • Dans Microsoft SQL Server 2005, vous disposez du package SQL Server Integration Services (SSIS) qui utilise une tâche de flux de données.
  • La tâche de flux de données contient des références à des colonnes de données de l’objet binaire volumineux (BLOB). Une colonne BLOB est une colonne de type de données DT_TEXT, le type de données DT_NTEXT ou le type de données DT_IMAGE.
  • Vous définissez la propriété BLOBTempStoragePath de la tâche de flux de données. Lorsque SSIS traite la colonne BLOB, il sera temporairement écrire des données à partir de la colonne BLOB sur le disque.
  • Il n’y a plus de 65 536 lignes actives qui contiennent des données BLOB dans la tâche de flux de données.

Dans ce scénario, vous exécutez le package SSIS. Lorsque SSIS essaie d’écrire des données BLOB dans le stockage temporaire, vous recevez des messages d’erreur suivants :

Message d'erreur 1

Erreur : 0x80070050 données de flux tâche DTS. Tuyau : Le fichier existe.
Message d'erreur 2

DTS_E_BUFFERGETTEMPFILENAME

Erreur : 0xC0048019 données de flux tâche DTS. Tuyau : Le Gestionnaire de tampons n’a pas pu obtenir un nom de fichier temporaire. Échec de l’appel de GetTempFileName.
Message d'erreur 3

DTS_E_UNUSABLETEMPORARYPATH
Erreur : 0xC0048013 données de flux tâche DTS. Tuyau : Le Gestionnaire de mémoire tampon n’a pas pu créer un fichier temporaire sur le chemin d’accès «chemin». Le chemin d’accès n'est pas considérée pour le stockage temporaire à nouveau.
Message d’erreur 4

DTS_E_CANTCREATEBLOBFILE
Erreur : 0xC0047070 données de flux tâche DTS. Tuyau : Le Gestionnaire de tampons ne peut pas créer un fichier pour spouler un objet long dans les répertoires nommés dans la propriété BLOBTempStoragePath. Un nom de fichier incorrect a été fourni, soit aucune autorisation.
Message d’erreur 5

DTS_E_UNABLETOWRITELOBDATATOBUFFER
Erreur : 0xC02020E5 au niveau de la tâche de flux de données, Source de fichier plat [1] : Échec de l’écriture des données d’objet longues de type DT_TEXT, DT_NTEXT ou DT_IMAGE dans le tampon de tâche de flux de données pour la colonne «ColumnName».
Message d’erreur 6

DTS_E_CANTADDBLOBDATA
Erreur : 0xC0208266 données de flux tâche DTS. Pipeline : Données de type Long ont été récupérées pour une colonne, mais ne peut pas être ajoutées à la mémoire tampon de tâche de flux de données.


Il est théoriquement possible qu’un problème similaire peut également se produire dans le scénario suivant :
  • Vous exécutez un package SSIS qui contient une tâche de flux de données.
  • Vous définissez la propriété BufferTempStoragePath de la tâche de flux de données. Lorsque une ressource de mémoire faible est envoyé pour le moteur de flux de données, le moteur de flux de données écrit des tampons de données dans les répertoires désignés dans la propriété BufferTempStoragePath .
  • Plus de 65 536 fichiers temporaires de tampons de données sont écrites dans les répertoires.
Remarque Dans ce scénario rare, vous recevez des messages d’erreur différents.
Si vous spécifiez des dossiers supplémentaires dans la propriété BLOBTempStoragePath ou de la propriété BufferTempStoragePath et puis exécutez à nouveau le package SSIS, vous trouvez les chemins d’accès supplémentaires sont ignorés et le package SSIS toujours ne s’exécute pas correctement.

Cause

Les dossiers qui sont désignés dans les propriétés de la BLOBTempStoragePath ou le BufferTempStoragePath contiennent des fichiers temporaires. Ces fichiers temporaires sont nommés dans une plage allant de DTS.tmp à DTSFFFF.tmp. La plage de numéros est de 0 x 0 et 0xFFFF. Par exemple, les noms de fichiers temporaires possibles incluent DTS.tmp, DTS1.tmp... et DTSFFFF.tmp. Il existe 65 536 noms de fichier possibles au total. Lorsqu’il n’y a plus de 65 536 fichiers, SSIS peut manquer de noms de fichiers et de lever les erreurs mentionnées dans la section Symptômes.

Résolution


Le correctif de ce problème a été publié dans les 5 mise à jour Cumulative pour SQL Server 2005 Service Pack 3. Pour plus d’informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
972511 Cumulative mise à jour 5 pour SQL Server 2005 Service Pack 3
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2005 version du correctif. Microsoft vous recommande l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
960598 le SQL Server 2005 versions publiées après la publication de SQL Server 2005 Service Pack 3
Les correctifs Microsoft SQL Server 2005 sont créés pour les packs de service spécifiques de SQL Server. Vous devez appliquer un correctif SQL Server 2005 Service Pack 3 pour une installation de SQL Server 2005 Service Pack 3. Par défaut, tout correctif qui est fourni dans un service pack de SQL Server est inclus dans le prochain service pack de SQL Server.

Solution de contournement

Pour contourner ce problème, appliquez l’une des méthodes suivantes :

Méthode 1

Augmenter la taille de mémoire tampon en affectant à la propriété DefaultBufferSize la valeur maximale de 104,857,600.

Remarque Si vous utilisez cette méthode, il peut y avoir une plus grande consommation de mémoire lorsque vous exécutez le package SSIS.

Méthode 2

Dans la phase de conception, essayez de réduire les transformations de blocage ou des goulots d’étranglement en aval après le point où les colonnes BLOB sont introduits à la tâche de flux de données. Cette méthode peut réduire la possibilité que la limite sera atteinte.

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Plus d'informations

Après avoir appliqué ce correctif, les deux problèmes suivants sont résolus :
  • Plusieurs chemins d’accès délimités par des points-virgules permettra les mémoires tampons de nettoyage dans les répertoires supplémentaires qui sont spécifiés dans les propriétés BLOBTempStoragePath ou BufferTempStoragePath.

    Si vous spécifiez plusieurs dossiers dans les propriétés BLOBTempStoragePath ou BufferTempStoragePath comme « C:\temp1 ; Si le problème se pose lorsque SSIS tente d’accéder au dossier premier, le deuxième dossier de D:\Temp2"and sera utilisé. Les fichiers temporaires ne sont pas répartis entre les chemins de dossier supplémentaires, sauf si un problème est survenu avec le premier dossier. S’il n’est pas une erreur irrécupérable, SSIS utilise le dossier suivant dans la liste avec succès.

    Toutefois, si le premier dossier manque d’espace disque, les erreurs graves sont validées. En outre, SSIS ne peut pas normalement ignorer l’erreur et utiliser le dossier suivant.
  • SSIS ne manquera pas de noms. Le nouveau modèle d’affectation de noms de fichier génère dynamiquement un GUID aléatoire pour chaque nom de fichier temporaire. Nouveaux noms de fichier commencent à trois préfixes suivants :
    • DTT: DTT les fichiers temporaires sont des fichiers de test. Ces fichiers sont utilisés pour s’assurer que le répertoire temporaire sont accessibles et écrit avant que les données sont enregistrées dans le répertoire.
    • DTB: DTB les fichiers temporaires sont des fichiers temporaires de BLOB. Ces fichiers sont utilisés lorsque les types de données DT_TEXT, DT_NTEXT ou DT_IMAGE sont traités dans une tâche de flux de données.
    • DTS: fichiers temporaires de DTS sont des fichiers temporaires d’échange mémoire tampon.
    Voici quelques exemples des nouveaux noms de fichiers temporaires :
    DTT{0004E1F9-8058-444D-9DB0-DB9888331E20}.tmp
    DTB{001414F4-54AE-49E2-9FCE-09CFFEF974E2}.tmp
    DTS{003B57D9-A239-41CA-B478-F577E26F0DBB}.tmp

Références


Pour plus d’informations sur le modèle de service incrémentiel pour SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
935897
Un modèle de service incrémentiel est disponible auprès de l’équipe SQL Server pour proposer des correctifs pour les problèmes signalés

Pour plus d’informations sur la façon d’obtenir SQL Server 2005 Service Pack 3, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
913089
Comment faire pour obtenir le dernier service pack pour SQL Server 2005
Pour plus d’informations sur les nouvelles fonctionnalités de SQL Server 2005 Service Pack 3 (SP3) et les améliorations dans SQL Server 2005 SP3, visitez le site Web de Microsoft à l’adresse suivante :

Pour plus d’informations sur le schéma d’appellation des mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
822499
Nouveau schéma d’affectation de noms pour les packages de mise à jour logicielle de Microsoft SQL Server
Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
824684
Description de la terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft
Propriétés

ID d'article : 972365 - Dernière mise à jour : 13 janv. 2017 - Révision : 1

Commentaires