Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı
Hata satırlarının otomatik işlenmesi için Script bileşeninde bir çıkışı doğrudan hata çıktısı olarak yapılandırmasanız da, yerleşik hata çıktısının işlevselliğini ek bir çıktı oluşturup scriptinizde koşullu mantık kullanarak uygun olduğunda satır bu çıktıya yönlendirebilirsiniz. Hata numarası ve hata gerçekleştiği sütunun kimliğini almak için dahili hata çıktısının davranışını taklit etmek isteyebilirsiniz; böylece hata numarası ve hata olduğu sütunun kimliği alınabilir.
Belirli bir önceden tanımlanmış Entegrasyon Hizmetleri hata koduna karşılık gelen hata tanımını eklemek isterseniz, Script bileşeninin ComponentMetaData özelliği aracılığıyla sunulan arayüz yöntemini IDTSComponentMetaData100 kullanabilirsinizGetErrorDescription.
Example
Burada gösterilen örnek, iki eşzamanlı çıktıya sahip bir dönüşüm olarak yapılandırılmış bir Script bileşeni kullanır. Script bileşeninin amacı, AdventureWorks örnek veritabanındaki adres verilerinden hata satırlarını filtrelemektir. Bu kurgusal örnek, Kuzey Amerika müşterileri için bir promosyon hazırladığımızı ve Kuzey Amerika'da olmayan adresleri filtrelememiz gerektiğini varsayıyor.
Örneği yapılandırmak için
Yeni Script bileşenini oluşturmadan önce, bir bağlantı yöneticisi oluşturun ve AdventureWorks örnek veritabanından adres verisini seçen bir veri akışı kaynağı yapılandırın. Bu örnek için, sadece CountryRegionName sütununa bakan bu örnekte, Person.vStateCountryProvinceRegion görünümünü kullanabilir veya Person.Address, Person.StateProvince ve Person.CountryRegion tablolarına katılarak veri seçebilirsiniz.
Veri Akışı tasarımcı yüzeyine yeni bir Script bileşeni ekleyin ve bunu dönüşüm olarak yapılandırın. Betik Dönüştürme Düzenleyicisi'ni açın.
Script sayfasında, ScriptLanguage özelliğini, script kodlamak için kullanmak istediğiniz script diline ayarlayın.
Uygulamalar için Microsoft Visual Studio Araçlar'ı (VSTA) açmak için Edit Script'e tıklayın.
Input0_ProcessInputRow yönteminde, aşağıda gösterilen örnek kodu yazın veya yapıştırın.
VSTA'yı kapat.
Input Columns sayfasında, Script dönüşümünde işlemek istediğiniz sütunları seçin. Bu örnekte yalnızca CountryRegionName sütunu kullanılır. Seçilmeden bıraktığınız mevcut giriş sütunları, veri akışında değişmeden geçirilir.
Girişler ve Çıkışlar sayfasında yeni, ikinci bir çıktı ekleyin ve SynchronousInputID değerini girişin ID'sine ayarlayın; bu değer aynı zamanda varsayılan çıktının SynchronousInputID özelliğinin değeridir. Her iki çıktının ExclusionGroup özelliğini aynı sıfır olmayan değere (örneğin, 1) ayarlayın; böylece her satırın sadece iki çıktıdan birine yönlendirileceğini belirtin. Yeni hata çıktısına "MyErrorOutput" gibi ayırt edici bir isim verin.
İstenen hata bilgisini yakalamak için yeni hata çıktısına ek çıkış sütunları ekleyin; bu bilgiler hata kodu, hatanın gerçekleştiği sütunun kimliği ve muhtemelen hata tanımını içerebilir. Bu örnek, ErrorColumn ve ErrorMessage adlı yeni sütunları oluşturur. Kendi uygulamanızda önceden tanımlanmış Entegrasyon Hizmetleri hatalarını yakalıyorsanız, hata numarası için bir ErrorCode sütunu eklediğinizden emin olun.
Script bileşeninin hata koşullarını kontrol edeceği giriş sütunu veya sütunlarının ID değerine dikkat edin. Bu örnek, ErrorColumn değerini doldurmak için bu sütun tanımlayıcısını kullanır.
Script Transformation Editörü'nü kapatın.
Script bileşeninin çıktılarını uygun hedeflere bağlayın. Düz dosya hedefleri, ad hoc test için yapılandırması en kolay olanlardır.
Paketi çalıştırın.
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
If Row.CountryRegionName <> "Canada" _
And Row.CountryRegionName <> "United States" Then
Row.ErrorColumn = 68 ' ID of CountryRegionName column
Row.ErrorMessage = "Address is not in North America."
Row.DirectRowToMyErrorOutput()
Else
Row.DirectRowToOutput0()
End If
End Sub
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (Row.CountryRegionName!="Canada"&&Row.CountryRegionName!="United States")
{
Row.ErrorColumn = 68; // ID of CountryRegionName column
Row.ErrorMessage = "Address is not in North America.";
Row.DirectRowToMyErrorOutput();
}
else
{
Row.DirectRowToOutput0();
}
}