Utilizzo di WITH RESULT SETS
definire in modo esplicito i metadati consentirà a SSIS di saltare il sp_describe_first_result_set
passo e usa i metadati che definisci. Il vantaggio è che puoi usarlo per ottenere SSIS per eseguire SQL che contiene una tabella temporanea (per me, quella performance ha aiutato molto); lo svantaggio è che devi mantenerlo e aggiornarlo manualmente se cambia qualcosa.
Esempio di query (procedura memorizzata:)
EXEC ('dbo.MyStoredProcedure')
WITH RESULT SETS
(
(
MyIntegerColumn INT NOT NULL,
MyTextColumn VARCHAR(50) NULL,
MyOtherColumn BIT NULL
)
)
Esempio di query (SQL semplice:)
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
)
)