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