Използване на 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
)
)