Potansiyel veri kaybı nedeniyle değer dönüştürülemedi [kapalı]


12

Bunun mükerrer bir soru olmadığını ya da bu konu için potansiyel bir mükerrer olmadığını açıklığa kavuşturarak başlayayım . Şimdiden StackOverflow ve DBA Stack Exchange, herhangi bir şans var, her bir varyant için her cevap uygulamayı denedim, herhangi bir şans.

Son iki gündür bu sorunla mücadele ediyorum (günde yaklaşık 7 saat çalışıyorum) ve sorunu Googling yaptıktan sonra bile, başka hiç kimsenin sorunumun aynı varyantına sahip olmadığı anlaşılıyor.

Ne yapmaya çalışıyorum?

SSIS'de, bir CSV dosyasından okumaya ve satırları bir OLE DB veritabanına eklemek çalışıyorum. Bunun için, aşağıda görülen en basit kurulumu yaptım.

  1. Flat File Source - CSV satırlarını okur.
  2. Derived Column - şu anda hiçbir şey yapmıyor (sadece denemek için orada).
  3. Data Conversion - şu anda hiçbir şey yapmıyor (sadece denemek için orada).
  4. OLE DB Destination - satırları veritabanında saklar.

Çalıştırmaya çalıştığımda , aşağıdaki hata iletisiyle OLE DB Hedefimde yürütmeyi durduruyor .

"OLE DB Hedef Girişi" (51) girişinde "Miktar" (187) giriş sütununda bir hata oluştu. Döndürülen sütun durumu: "Potansiyel veri kaybı nedeniyle değer dönüştürülemedi."

( Amount) Başarısız olan sütun şu anda türdedir DT_STR. Şu anda en çok inancım var gibi görünüyor.

Ne denedim?

  • Flat File ConnectionBaşarısız olan sütunun 'Türleri öner "işlevini kullanarak denedim . Bu Single byte signed intveri tipini tavsiye etti .
    • Durur benim Düz dosya Kaynak .
    • Hata olduğunu Veri dönüştürme başarısız oldu. "Miktar" sütunu için veri dönüşümü, durum değeri 2 ve durum metni "Potansiyel veri kaybı nedeniyle değer dönüştürülemedi."
  • Ben Derived Columnbir içine sütun döküm için kullanarak denedim DT_I4.
    • Durur benim Türetilmiş Sütun .
    • Hata olduğunu Veri dönüştürme başarısız oldu. "Miktar" sütunu için veri dönüşümü, durum değeri 2 ve durum metni "Potansiyel veri kaybı nedeniyle değer dönüştürülemedi."
  • Ben sütunumun Data Conversiondeğerini bir döküm için kullanarak denedim DT_I4.
    • Durur benim Data Conversion.
    • Hata olduğunu Veri dönüştürme başarısız oldu. "Miktar" sütunu için veri dönüşümü, durum değeri 2 ve durum metni "Potansiyel veri kaybı nedeniyle değer dönüştürülemedi."
  • DT_STRKaynak ve hedef değerimin uzunluğunu değiştirmeyi denedim .
    • Ayarlara bağlı olarak kaynakta veya hedefte durur .
  • Senin yerine birlikte bir Excel Kaynak konnektörü kullanılarak bağlayan denedim ve olmadan IMEX=1bağlantı dizesine ekledi. Şanssız.

Programlama duygum bana vidalandığımı söylüyor. Bu kadar basit bir şey için hiç bu kadar büyük bir problemle hiç karşılaşmadım.

Ve neden "potansiyel" veri kaybını görmezden gelemiyorum ? Az söylemek gerçekten sinir bozucu.

Benim sistemim

SQL Server 2008 kurulu bir Windows Server 2008 R2 makinesidir. Makinenin kendisi Windows Update aracılığıyla tamamen güncellenir.


Görünüşe göre (Access'ten çekerek) bir değerle bu sorunu vardı ve ben sütun döküm zaman belirli bir kod sayfası kullanmak zorunda gibi görünüyor. Ne yaptığımı kontrol etmek için artık SSIS paketine erişimim yok.

Eklemeye çalıştığınız sütunun veri türü nedir Amount?
Tüm Ticaretten Jon

2
CSV için Düz Dosya Bağlantı Yöneticinizi açın. Gelişmiş sekmesine gidin ve Amountsütunu seçin . Bir ekran görüntüsü alın ve lütfen sorunuzu bu fotoğrafla güncelleyin.
billinkc

Bağlantı Yöneticisine bakma fırsatınız oldu mu?
billinkc

1
Vidalandığınıza inanmıyorum, ancak Bağlantı Yöneticinizin tanımını görmeden söylemek mümkün değil.
billinkc

Yanıtlar:


3

Bu birkaç kez içine çalıştırmak ve sorun verme / alma parametreleri veri türlerinin bir uyumsuzluğu oldu. Yapılacak ilk şey, kaynak veya hedefe sağ tıklayıp Gelişmiş Düzenleyici'yi seçerek bu parametreleri kontrol etmektir. Giriş ve Çıkış Özellikleri'ne gidin ve bu sütunun veri türünü tüm öğeler için kontrol edin - hem Harici, Çıkış hem de Giriş. Burada genellikle bir fark gördüm, çoğu kez bir Unicode (WSTR) ve diğer I4 veya DSTR.


8

Hatayı yoksayma

Her şeyden önce, Düz Dosya Kaynağına, Hata Çıktısına gidip "Kesme" altındaki "Hata Bileşeni" ni "Hata Yoksay" olarak değiştirerek dize kesmeyi yok sayabilmelisiniz.

Daha iyi çözüm

Asıl sorun, SSIS boru hattının içindeki dize uzunluğunun hala yanlış olması olabilir, çünkü daha önceki bir noktada başlatıldı.

Durumun böyle olup olmadığını, Düz Dosya Kaynağınızdaki (veya Türetilmiş Sütun / Veri Dönüştürme işleminden sonra) yeşil oku çift tıklayıp "Meta Veri" yi seçerek belirleyebilirsiniz. Orada boru hattının içindeki alanın uzunluğunu görebilirsiniz.

Meta verilerin artık kaynak bileşenle eşleşmediğini sık sık gördüyseniz, çoğunlukla Düz Dosya Kaynağı'nı ve bunun Sihirbaz aracılığıyla uygun Bağlantısını oluşturuyorsanız.

Benim önerim, bağlantıyı ve Düz Dosya Kaynağını silmek ve bunları yeniden oluşturmak, çünkü boru hattı meta verilerini kaynak bileşenlerle yeniden senkronize etmenin bir yolunu bulamadım.


2
Bu yine de "kesme" altına girmez. Zaten denedim.
Mathias Lykkegaard Lorenzen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.