Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Package SSIS ne voulant pas récupérer les métadonnées de la table temporaire

Utilisation de WITH RESULT SETS définir explicitement les métadonnées permettra à SSIS d'ignorer le sp_describe_first_result_set étape et utilisez les métadonnées que vous définissez. L'avantage est que vous pouvez l'utiliser pour que SSIS exécute SQL contenant une table temporaire (pour moi, cette performance a beaucoup aidé); l'inconvénient est que vous devez le maintenir et le mettre à jour manuellement si quelque chose change.

Exemple de requête (procédure stockée :)

    EXEC ('dbo.MyStoredProcedure')
    WITH RESULT SETS
      (
        (
            MyIntegerColumn INT NOT NULL,
            MyTextColumn VARCHAR(50) NULL,
            MyOtherColumn BIT NULL
        )
      )

Exemple de requête (SQL simple :)

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
        )
    )