sql >> Databasteknik >  >> RDS >> Sqlserver

SSIS-paketet vill inte hämta metadata för temporär tabell

Använder WITH RESULT SETS att explicit definiera metadata kommer att tillåta SSIS att hoppa över sp_describe_first_result_set steg och använd metadata som du definierar. Uppsidan är att du kan använda detta för att få SSIS att köra SQL som innehåller en temporär tabell (för mig hjälpte den prestandan mycket); Nackdelen är att du måste underhålla och uppdatera detta manuellt om något ändras.

Fråga exempel (lagrad procedur:)

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

Fråga exempel (enkel SQL:)

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


  1. TEMPFILE Offline Fysisk standby

  2. SQL-ändringstabell

  3. NVL() Funktion i Oracle

  4. MySQL datumformat fuskblad