Uso de SQL dinámico en una fuente OLE DB en SSIS 2012

Tengo un proc almacenado como el texto del comando SQL, que pasa un parámetro que contiene un nombre de tabla. El proc luego devuelve datos de esa tabla. No puedo llamar a la tabla directamente como el origen de OLE DB porque debe pasar alguna lógica de negocios al conjunto de resultados en el proceso. En SQL 2008 esto funcionó bien. En un paquete actualizado de 2012, obtengo "Los metadatos no se pudieron determinar porque ... contiene SQL dinámico. Considere usar la cláusula WITH RESULT SETS para describir explícitamente el conjunto de resultados".

El problema es que no puedo definir los nombres de los campos en el proceso porque el nombre de la tabla que se pasa como parámetro puede ser un valor diferente y los campos resultantes pueden ser diferentes cada vez. ¿Alguien encuentra este problema o tiene alguna idea? He intentado todo tipo de cosas con SQL dinámico usando "dm_exec_describe_first_result_set", tablas temporales y CTE que contienen WITH RESULT SETS, pero no funciona en SSIS 2012, el mismo error. El contexto es un problema con muchos de los enfoques de SQL dinámico.

Esto es lo último que intenté, sin suerte:

DECLARE @sql VARCHAR(MAX)
SET @sql = 'SELECT * FROM ' + @dataTableName

DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr +',','') + [name] + ' ' + system_type_name FROM sys.dm_exec_describe_first_result_set(@sql, NULL, 1)

exec('exec(''SELECT * FROM myDataTable'') WITH RESULT SETS ((' + @listStr + '))')

Respuestas a la pregunta(2)

Su respuesta a la pregunta