Używanie dynamicznego SQL w źródle OLE DB w SSIS 2012

Mam zapisany proc jako tekst polecenia SQL, który przekazuje parametr zawierający nazwę tabeli. Następnie proc zwraca dane z tej tabeli. Nie mogę wywołać tabeli bezpośrednio jako źródła OLE DB, ponieważ pewna logika biznesowa musi się zdarzyć w zestawie wyników w proc. W SQL 2008 działało to dobrze. W zaktualizowanym pakiecie 2012 otrzymuję „Nie można określić metadanych, ponieważ ... zawiera dynamiczny SQL. Rozważ użycie klauzuli WITH RESULT SETS, aby wyraźnie opisać zestaw wyników”.

Problem polega na tym, że nie mogę zdefiniować nazw pól w proc, ponieważ nazwa tabeli, która jest przekazywana jako parametr, może być inną wartością, a wynikowe pola mogą być różne za każdym razem. Ktoś napotka ten problem lub ma jakieś pomysły? Wypróbowałem wiele różnych rzeczy za pomocą dynamicznego SQL przy użyciu „dm_exec_describe_first_result_set”, tabel tymczasowych i CTE zawierających ZESTAWY WYNIKÓW, ale nie działa w SSIS 2012, ten sam błąd. Kontekst to problem z wieloma dynamicznymi podejściami SQL.

To ostatnia rzecz, której próbowałem, bez powodzenia:

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

questionAnswers(2)

yourAnswerToTheQuestion