2016-03-22 17 views
2

içine eklenmiş olamaz Ben bir select deyim var, burada 2 temp tabloları oluşturmuş ve aralarında bir birleştirme oluşturarak bu geçici tablolardan veri almadan önce bir eklenti seçmek için bir ekleme yapıyor. Bu nihai seçim, meta verilerinin olmasını istediğim şey. Ssms'de iyi çalışıyor, ssis'te neden bu hatayı attığını bilmiyorum. Ben çalıştıklarından emin ve bir bütün olarak sorgu olmak için tüm ifadeleri test ettikMeta veri, <a1> '</ a1> ifadesi'

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 

ve bana veriyi döndürür, ancak ssis hata atıyor: örneğin Sorgu olduğunu

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. 

cevap

2

yerine gibi bir şey bir tablo değişkeni kullanmayı deneyin:

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 

çalışması gerekir ince

1

Eğer çalışıyorsanız SSIS 2012 veya sonraki sürümlerinde, tabloların meta verilerini almak için sistem saklı yordamını sp_describe_first_result_set kullanır ve geçici tabloları desteklemez.
Ancak tablo değişkenleri ve CTE'ler gibi diğer seçenekleri kullanabilirsiniz.

İlgili konular