Aracılığıyla paylaş


Verilerde Hata İşleme

Şunlar için geçerlidir:SQL Server Azure Data Factory'de SSIS Entegrasyon Çalışma Zamanı

Veri akışı bileşeni sütun verilerine dönüştürme uyguladığında, kaynaklardan veri ayıkladığında veya verileri hedeflere yüklediğinde hatalar oluşabilir. Hatalar genellikle beklenmeyen veri değerleri nedeniyle oluşur. Örneğin, bir sütun sayı yerine dize içerdiğinden, veri tarih olduğundan ve sütunun sayısal veri türüne sahip olduğu için veritabanı sütununa ekleme işlemi başarısız olduğundan veya sütun değeri sıfır olduğundan bir ifadenin değerlendirilememesi ve bunun sonucunda geçerli olmayan bir matematiksel işlemle sonuçlanması nedeniyle veri dönüştürme başarısız olur.

Hatalar genellikle aşağıdaki kategorilerden birine girer:

  • Önemli basamak kaybına, önemsiz basamak kaybına ve dizelerin kısaltılmasına neden olan veri dönüştürme hataları. İstenen dönüştürme desteklenmiyorsa veri dönüştürme hataları da oluşur.

  • Çalışma zamanında değerlendirilen ifadelerin geçersiz işlemler gerçekleştirmesi veya eksik veya yanlış veri değerleri nedeniyle söz dizimsel olarak yanlış olması durumunda oluşan ifade değerlendirme hataları.

  • Bir arama işlemi arama tablosunda eşleşme bulamazsa oluşan arama hataları.

Integration Services hatalarının, uyarılarının ve diğer iletilerin listesi için bkz. Integration Services Hatası ve İleti Başvurusu.

Satır düzeyi hataları yakalamak için hata çıkışlarını kullanma

Birçok veri akışı bileşeni, bileşenin hem gelen hem de giden verilerdeki satır düzeyi hataları nasıl işlediğini denetlemenize olanak tanıyan hata çıkışlarını destekler. Giriş veya çıkıştaki tek tek sütunlarda seçenekleri ayarlayarak, kesme veya hata oluştuğunda bileşenin nasıl davranacağını belirtirsiniz. Örneğin, müşteri adı verileri kısaltılırsa bileşenin başarısız olmasını belirleyebilirsiniz, ancak daha az önemli veriler içeren başka bir sütundaki hataları görmezden gelebilirsiniz.

Hata çıkışı başka bir dönüşümün girişine bağlanabilir veya hata olmayan çıkıştan farklı bir hedefe yüklenebilir. Örneğin, hata çıkışı, boş bir sütun için dize sağlayan Türetilmiş Sütun dönüşümüne bağlı olabilir.

Aşağıdaki diyagramda hata çıkışı içeren basit bir veri akışı gösterilmektedir.

Hata çıkışı olan veri akışı Hata çıkışı olan

Daha fazla bilgi için bkz. Veri Akışı ve Tümleştirme Hizmetleri Yolları.

Hata Çıkışı Yapılandırma iletişim kutusu

Hata çıkışını destekleyen veri akışı dönüştürmeleri için hata işleme seçeneklerini yapılandırmak için Hata Çıktısını Yapılandır iletişim kutusunu kullanın.

Hata çıkışlarıyla çalışma hakkında daha fazla bilgi edinmek için bkz. Verilerde Hata İşleme.

Seçenekler

Giriş veya Çıkış
Çıktının adını görüntüleyin.

Sütun
Dönüştürme düzenleyicisi iletişim kutusunda seçtiğiniz çıkış sütunlarını görüntüleyin.

Hata
Uygunsa, bir hata oluştuğunda ne olacağını belirtin: hatayı yoksayın, satırı yeniden yönlendirin veya bileşenin başarısız olmasına izin verin.

İlgili Konular:Veride Hata İşleme

Kısaltma
Geçerli olduğunda, bir kesme gerçekleştiğinde ne olacağını belirtin: hatayı yoksayın, satırı yeniden yönlendirin veya bileşen başarısız olsun.

İlgili Konular:Veride Hata İşleme

Açıklama
İşlemin açıklamasını görüntüleyin.

Bu değeri seçili hücrelere ayarla
Bir sorun ya da kesinti meydana geldiğinde tüm seçili hücrelerle ilgili ne yapılacağını belirtin: hatayı yoksayın, satırı yeniden yönlendirin veya bileşeni başarısız yapın.

Uygula
Seçili hücrelere hata işleme seçeneğini uygulayın.

Hatalar, başarısızlıklar veya kesilmeler olabilir.

Hatalar iki kategoriden birine girer: hatalar veya kesmeler.

Hatalar. Hata, açık bir başarısızlığı gösterir ve NULL sonucu oluşturur. Bu tür hatalar veri dönüştürme hataları veya ifade değerlendirme hataları içerebilir. Örneğin, alfabetik karakterler içeren bir dizeyi sayıya dönüştürme girişimi hataya neden olur. Veri dönüştürmeleri, ifade değerlendirmeleri ve ifade sonuçlarının değişkenlere, özelliklere ve veri sütunlarına atamaları geçersiz atamalar ve uyumsuz veri türleri nedeniyle başarısız olabilir. Daha fazla bilgi için bkz. Atama (SSIS İfadesi), İfadelerde Integration Services Veri Türleri ve Integration Services Veri Türleri.

Kısaltmalar. Kesilme durumu, hatadan daha az ciddidir. Bir trunkasyon, kullanılabilir ve hatta arzu edilen sonuçlar üretebilir. Kesmeleri hata veya kabul edilebilir koşullar olarak ele alabilirsiniz. Örneğin, yalnızca bir karakter genişliğindeki bir sütuna 15 karakterlik bir dize eklirseniz, dizeyi kesmeyi seçebilirsiniz.

Hata işleme seçeneğini belirleme

Kaynakların, dönüşümlerin ve hedeflerin hataları ve kesmeleri nasıl işleyeceklerini yapılandırabilirsiniz. Aşağıdaki tabloda seçenekler açıklanmaktadır.

Seçenek Açıklama
Başarısız Bileşen Veri Akışı görevi bir hata veya kesme oluştuğunda başarısız olur. Hata ve kesme durumlarında başarısızlık varsayılan seçenektir.
Hatayı Yoksay Hata veya kesme durumunu yoksayılır ve veri satırı dönüşüm ya da kaynak çıkışına yönlendirilir.
Satırı Yeniden Yönlendirme Hata veya kesilme durumundaki veri satırı, kaynak, dönüştürme veya hedefin hata çıkışına yönlendirilir.

Hata hakkında daha fazla bilgi edinin

Veri sütunlarına ek olarak, hata çıkışı ErrorCode ve ErrorColumn sütunlarını içerir. ErrorCode sütunu hatayı tanımlar ve ErrorColumn, hata sütununun köken tanımlayıcısını içerir.

Bazı durumlarda ErrorColumn sütununun değeri sıfır olarak ayarlanır. Bu, hata koşulu tek bir sütun yerine satırın tamamını etkilediğinde oluşur. Arama dönüşümünde aramanın başarısız olması buna örnek olarak verilmiştir.

Bu iki sayısal değer, ilgili hata açıklaması ve sütun adı olmadan sınırlı kullanımda olabilir. Hata açıklamasını ve sütun adını almanın bazı yolları aşağıdadır.

  • Hata çıkışına bir Veri Görüntüleyicisi ekleyerek hem hata açıklamalarını hem de sütun adlarını görebilirsiniz. SSIS Tasarımcısı'nda hata çıkışına giden kırmızı oka sağ tıklayın ve Veri Görüntüleyicisi'ni Etkinleştir'i seçin.

  • Kaydı etkinleştirerek ve DiagnosticEx olayını seçerek sütun adlarını bulabilirsiniz. Bu olay, günlüğe bir veri akışı sütun haritası yazar. Daha sonra bu sütun eşlemesindeki tanımlayıcısından sütun adını arayabilirsiniz. DiagnosticEx olayının, günlüğün boyutunu küçültmek için XML çıkışındaki boşluğu korumadığını unutmayın. Okunabilirliği geliştirmek için, günlüğü Visual Studio'da XML biçimlendirmesini ve söz dizimi vurgulama özelliklerini destekleyen bir XML düzenleyicisine kopyalayın. Günlük kaydı hakkında daha fazla bilgi için bkz. Integration Services (SSIS) Günlüğü.

    Veri akışı sütun haritası örneği aşağıda verilmiştir.

    
    \<DTS:PipelineColumnMap xmlns:DTS="www.microsoft.com/SqlServer/Dts">  
        \<DTS:Pipeline DTS:Path="\Package\Data Flow Task">  
            \<DTS:Column DTS:ID="11" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="12" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="13" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="14" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="20" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="21" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Product]"/>  
            \<DTS:Column DTS:ID="22" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Price]"/>  
            \<DTS:Column DTS:ID="23" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[Timestamp]"/>  
            \<DTS:Column DTS:ID="24" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorCode]"/>  
            \<DTS:Column DTS:ID="25" DTS:IdentificationString="ADO NET Source.Outputs[ADO NET Source Error Output].Columns[ErrorColumn]"/>  
            \<DTS:Column DTS:ID="31" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Customer]"/>  
            \<DTS:Column DTS:ID="32" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Product]"/>  
            \<DTS:Column DTS:ID="33" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Price]"/>  
            \<DTS:Column DTS:ID="34" DTS:IdentificationString="Flat File Destination.Inputs[Flat File Destination Input].Columns[Timestamp]"/>  
        \</DTS:Pipeline>  
    \</DTS:PipelineColumnMap>  
    
    
  • Betik bileşenini, hata açıklamasını ve sütun adını hata çıkışının ek sütunlarına eklemek için de kullanabilirsiniz. Örnek için bkz. Betik Bileşeni ile Hata Çıkışını Geliştirme.

    • Arabirimin yöntemini çağırmak GetErrorDescription için tek bir betik satırı kullanarak hata açıklamasını ek bir sütuna IDTSComponentMetaData100 ekleyin.

    • Arabirimin [Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100.GetIdentificationStringByID*] (/previous-versions/sql/sql-server-2016/mt657629(v=sql.130)) yöntemini IDTSComponentMetaData100 çağırmak için tek bir betik satırı kullanarak sütun adını ek bir sütuna ekleyin.

    Betik bileşenini, hataları yakalamak istediğiniz veri akışı bileşenlerinden herhangi bir yerde veri akışının hata kesimine ekleyebilirsiniz. Genellikle Betik bileşenini hata satırları bir hedefe yazılmadan hemen önce yerleştirirsiniz. Bu şekilde, betik yalnızca kaydedilen hata satırları için açıklamaları arar. Veri akışının hata segmenti bazı hataları düzeltebilir ve bu satırları bir hata hedefine yazmayabilir.

Ayrıca Bkz.

Veri Akışı
Dönüşümlerle Verileri Dönüştürme
Bileşenleri Yollarla Bağlama
Veri Akışı Görevi
Veri Akışı