SSIS cannot 'see' the metadata for returned data from stored procedures like it can for tables and views. Here is a collection of methods to try when using sprocs with SSIS.
On oledb connection managers, set -
DelayValidation = True
On data sources and components inside the data flow, set -
ValidateExternalMetaData = False
When calling your stored procedure, prefix as follows -
"SET FMTONLY OFF; EXEC dbo.myprocedure @param = 1"
In the stored procedure itself, create a header as follows -
CREATE PROCEDURE dbo.myprocedure (@param INT) AS BEGIN -- {options to set...} SET NOCOUNT ON; -- {supress 'rows affected' messages} SET FMTONLY OFF; -- {ensure full data retuned. incase FMTONLY ON was in effect} -- {false header to pass metadata} IF 1 = 0 BEGIN SELECT CAST(NULL AS INT) AS [intColumn1] , CAST(NULL AS INT) AS [intColumn2] , CAST(NULL AS VARCHAR(5)) AS [varcharColumn1] , CAST(NULL AS VARCHAR(255)) AS [varcharColumn2] , CAST(NULL AS DATETIME2(0)) AS [datetime2Column1] , CAST(NULL AS VARBINARY(20)) AS [varbinaryColumn1] END -- {genuine query} SELECT intColumn1, intColumn2, varcharcolumn1 ... END GO
SSISTalk: Phil Brammer - Stored Procedures and the OLE DB Source
ReplicationAnswers : Coping with no column names in the oledb source
No comments:
Post a Comment