2012-07-31 15 views
19

SSIS'e nispeten yeniyim. Ben Oracle için Microsoft OLEDB kullanarak bir Oracle veritabanı bilgileri ayıklamak için çalışıyorum ve bu sorguyu kullanıyorum:SSIS - potansiyel bir veri kaybı nedeniyle değer dönüştürülemiyor

SELECT ID FROM Test 

Ben belirten bir hata mesajı alıyorum: the value cannot be converted because of a potential loss of data. Ben aşağıdakilere sorguyu değiştirirseniz o zaman çalışır:

SELECT '1' FROM Test 

Ben kimliği bir tamsayı olmadığı için başarısız olduğunu düşünüyorum. Ancak, düz dosya bağlantı yöneticisi OutputColumnWidth'ın 50 olduğunu gösterir. Ne yapıyorum yanlış?

Güncelleme 16:30 GMT
biraz daha bu işe baktım ve o frekansta 'ya da sorunlara neden oluyor 'none' bir Histogram sahip sütunlar gibi görünüyor. 'Yüksekliği Dengeli' Histogramı olanlar Tamam görünüyor.

+0

'Test' tablosundaki' ID' veri türü nedir? – billinkc

+0

@ billinkc, şunun gibi görünür: String [DT_STR] – w0051977

+0

@billinkc, Soruyu düzenledim. Lütfen bir göz at. – w0051977

cevap

31

Bu yaygın bir şeydir. Çoğu durumda, sütunların meta verilerinin belirlenemediği başka bir sistem türünden ssis'e içe aktarma için varsayılanlar str (50) olarak varsayılan değerdir. Bunu tek bir karakter sütununa zorlamaya çalıştığınız için, verileri kaybedebileceğinizi varsayar. Basitçe sağ tıklayarak ve seçerek kaynak bileşeni gitmek göster "Gelişmiş editörü ..."

Sonra Click Son sekmeye (giriş ve çıkış özellikleri)

için OLE DB Kaynak Çıktı yanındaki + gezinmek

Kaydırma iletişim kutusunun sağında Uzunluk Veri Türü Mülkiyet Çıktı Sütunlar'a

Vurgu kimliği sütunu yanındaki + tıklayın 1.

ila değiştirmek
+1

Bunun için teşekkürler +1. Çözüm, söylediğin şeyin tam tersini yapmaktı, yani 1'den 50'ye değişti (beni doğru yönde işaret ettin). 50 ile 1 arasında bir değişiklik olduğunu söylediniz, çünkü tamsayı olduğunu düşündünüz mü? - aslında bir String tipiydi. Bazı çıkış sütunlarının yanlış veri türüne sahip olduğunu fark ettim. Bir String için dört bayt işaretli tamsayı. Cevabını kabul etmeden önce bunun neden olabileceğini açıklayabilir misin? – w0051977

+0

1 olduğunu düşündüm çünkü '1' için çalıştığını söyledin, başlangıçta hatanın ithal edilen verileri daha küçük bir hedef alana taşıdığın sonraki adımda olduğunu düşündüm. Buradaki açıklamanız, gerçek içe aktarmada meta verilerin yanlış olduğunu gösteriyor. Oracle için Oracle DB ile aynı düzeyde bir sürücü kullanıyor musunuz?Ayrıca AlwaysUseDefaultCodePage bayrağının durumu nedir (burada cevaba bakın: http://stackoverflow.com/a/8697899/236348)? –

+1

Teşekkürler. Soruyu yazmadan önce bağlantınıza göre AlwaysUseDefaultCodePage bayrağını zaten ayarlamıştım. “Meta veri yanlış” ve “aynı düzeyde” ile ne demek istiyorsun? – w0051977