2016-03-22 18 views
2

私は2つのテンポラリテーブルを作成し、それらの間の結合を作成するそれらのテンポラリテーブルからデータを取る前にselectに挿入を行うselect文があります。この最終的な選択は、私がメタデータをしたいものです。 ssmsでそれはうまく動作する、私はなぜそのエラーを投げるのか分からないssisで。クエリは、次のような次のとおりです。ステートメント 'insert into

CREATE TABLE #Per (PerID bigint NOT NULL......) 
CREATE TABLE #Pre (PerID bigint NOT NULL, IsWorking.......) 
INSERT INTO #Per SELECT .... FROM ..... 
INSERT INTO #Pre SELECT .... FROM ..... 
SELECT * FROM #Per per LEFT JOIN #Pre pre ON per.PerID = pre.PerID 

私はすべての彼らは動作させるために文全体としてクエリをテストして、それは私のデータを返しますが、SSISは、エラーを投げている:

The metadata could not be determined because statement 'INSERT INTO #Per SELECT ...... uses a temp table.". 
Error at project_name [646]: Unable to retrieve column information from the data source. Make sure your target table in the database is available. 

答えて

2

あなたが作業している場合は

DECLARE @Per TABLE (PerID bigint NOT NULL......) 
DECLARE @Pre TABLE (PerID bigint NOT NULL, IsWorking.......) 
INSERT INTO @Per SELECT .... FROM ..... 
INSERT INTO @Pre SELECT .... FROM ..... 
SELECT * FROM @Per per LEFT JOIN @Pre pre ON per.PerID = pre.PerID 

細かい

1

を作業する必要がありますのようなものではなく、テーブル変数を使用してみてくださいSSIS 2012以降のバージョンでは、システムストアドプロシージャsp_describe_first_result_setを使用してテーブルのメタデータをフェッチし、一時テーブルはサポートしません。
しかし、テーブル変数やCTEなどの他のオプションを使用することもできます。