Maison >base de données >tutoriel mysql >Pourquoi mon package SSIS échoue-t-il lors de la récupération des métadonnées des tables temporaires ?

Pourquoi mon package SSIS échoue-t-il lors de la récupération des métadonnées des tables temporaires ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 05:13:10692parcourir

Why Does My SSIS Package Fail When Retrieving Metadata from Temporary Tables?

Échec de la récupération des métadonnées dans le package SSIS en raison d'une table temporaire

Dans SSIS, la récupération des métadonnées des tables temporaires peut parfois entraîner l'échec du package avec l'erreur : "Erreur non spécifiée. Un enregistrement OLE DB est disponible. Les métadonnées n'ont pas pu être déterminées car l'instruction 'select * from '##TmpMcsConfigurationDeviceHistory86B34BFD041A430E84CCACE78DA336A1'' utilise une table temporaire. L'erreur indique que SSIS n'est pas en mesure de déterminer dynamiquement les métadonnées de la table temporaire.

Résolution

Pour résoudre ce problème, vous pouvez définir explicitement les métadonnées de la table temporaire. table à l’aide de la clause WITH RESULT SETS. Cela fournit à SSIS les informations nécessaires à l'avance, éliminant ainsi le besoin de déterminer dynamiquement les métadonnées, ce qui peut entraîner des échecs pour les tables temporaires.

Exemple de requête avec WITH RESULT SETS :

En fournissant explicitement les métadonnées, SSIS peut éviter de les récupérer dynamiquement à partir de la table temporaire, éliminant ainsi l'erreur et permettant au package de récupérer les métadonnées avec succès.
EXEC ('
    CREATE TABLE #a 
      (
        MyIntegerColumn INT NOT NULL,
        MyTextColumn VARCHAR(50) NULL,
        MyOtherColumn BIT NULL
      ) 
    INSERT INTO #a 
      (
        MyIntegerColumn,
        MyTextColumn,
        MyOtherColumn
      )
    SELECT 
        1 AS MyIntegerColumn,
        ''x'' AS MyTextColumn,
        0 AS MyOtherColumn

    SELECT MyIntegerColumn, MyTextColumn, MyOtherColumn
    FROM #a')

WITH RESULT SETS
    (
        (
            MyIntegerColumn INT NOT NULL
           ,MyTextColumn VARCHAR(50) NULL
           ,MyOtherColumn BIT NULL
        )
    )

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn