Maison > base de données > tutoriel mysql > Pourquoi mon package SSIS ne parvient-il pas à acquérir les métadonnées d'une table temporaire et comment puis-je y remédier à l'aide de « AVEC DES JEUX DE RÉSULTATS » ?

Pourquoi mon package SSIS ne parvient-il pas à acquérir les métadonnées d'une table temporaire et comment puis-je y remédier à l'aide de « AVEC DES JEUX DE RÉSULTATS » ?

Mary-Kate Olsen
Libérer: 2024-12-27 14:23:21
original
566 Les gens l'ont consulté

Why Does My SSIS Package Fail to Acquire Metadata for a Temporary Table, and How Can I Fix It Using `WITH RESULT SETS`?

Le package SSIS bloque l'acquisition de métadonnées pour une table temporaire

Dans un package SSIS, plusieurs flux créent des tables temporaires globales en tant que zones de transit pour les données. Cependant, un flux rencontre un échec intermittent lors de la tentative de récupération des métadonnées de sa table temporaire. Le message d'erreur se lit comme suit :

Unspecified error. The metadata could not be determined because statement 'select * from '##TmpMcsConfigurationDeviceHistory86B34BFD041A430E84CCACE78DA336A1'' uses a temp table.
Copier après la connexion

L'expression de création de la table temporaire est :

CREATE TABLE " + @[User::TmpMcsConfigurationDeviceHistory]  + " ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
Copier après la connexion

Évaluée, cette expression devient :

CREATE TABLE ##TmpMcsConfigurationDeviceHistory764E56F088DC475C9CC747CC82B9E388 ([RecId] [bigint] NULL,[DataAreaID] [nvarchar](4) COLLATE database_default NULL,[Asset] [bigint] NULL,[Code] [nvarchar](255) COLLATE database_default NULL,[Configuration] [bigint],[StartdateTime] [datetime] NULL,[EndDateTime] [datetime] NULL)
Copier après la connexion

Solution

Pour résoudre ce problème, envisagez d'utiliser WITH RESULT SETS pour définir explicitement les métadonnées du temporaire tableau. Cela permet à SSIS de contourner l'étape sp_describe_first_result_set et d'utiliser les métadonnées fournies.

Implémentation

Pour les procédures stockées, utilisez la syntaxe suivante :

EXEC ('dbo.MyStoredProcedure')
WITH RESULT SETS
  (
    (
        MyIntegerColumn INT NOT NULL,
        MyTextColumn VARCHAR(50) NULL,
        MyOtherColumn BIT NULL
    )
  )
Copier après la connexion

Pour les requêtes SQL simples, utilisez la syntaxe suivante :

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
        )
    )
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal