Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SSIS пакетът не иска да извлича метаданни на временна таблица

Използване на WITH RESULT SETS за изрично дефиниране на метаданните ще позволи на SSIS да пропусне sp_describe_first_result_set стъпка и използвайте метаданните, които дефинирате. Предимството е, че можете да използвате това, за да накарате SSIS да изпълнява SQL, който съдържа временна таблица (за мен тази производителност помогна много); недостатъкът е, че трябва ръчно да поддържате и актуализирате това, ако нещо се промени.

Примерна заявка (запазена процедура:)

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

Примерна заявка (обикновен 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо логическите показания за прозоречни агрегатни функции са толкова високи?

  2. Възможно ли е принудително заключване на ниво ред в SQL Server?

  3. Неявно преобразуване на изходния формат на SSIS за дата и час

  4. Защо не мога да използвам псевдоним в израза DELETE?

  5. Отстраняване на неизправности при Microsoft SQL Server Грешка 18456