Symulowanie Error wyjścia dla składnika skryptów
Chociaż wyjścia bezpośrednio nie można skonfigurować jako wyjściowy błędu w składniku skryptów dla automatycznej obsługi wierszy błędów, można odtworzyć funkcji wyjścia błąd wbudowanych, tworząc dodatkowe dane wyjściowe i za pomocą logiki warunkowego w skrypcie na wiersze bezpośrednio do tego raportu, gdy jest to konieczne.Może zajść potrzeba naśladowania zachowanie wyjścia wbudowanych błędu przez dodanie dwóch kolumn dodatkowe dane wyjściowe do odbierania numer błędu i identyfikator kolumna, w którym wystąpił błąd.
Jeśli chcesz dodać opis błędu, który odpowiada określonej wstępnie zdefiniowane Integration Services Kod błędu, można użyć GetErrorDescription(Int32) Metoda IDTSComponentMetaData100 interfejs, dostępnych za pośrednictwem składnika skryptów ComponentMetaData() Właściwość.
Przykład
Podanym tu przykładzie użyto składnika skryptów, skonfigurowany jako transformacja, zawierający dwa wyjścia synchronicznych.Celem części skryptu jest filtrowanie wierszy błąd adres danych z przykładowej bazy danych AdventureWorks.W tym przykładzie fikcyjne zakłada, że mamy przygotowywana awans klienci w Ameryce Północnej i konieczne jest filtrowanie adresów, które nie znajdują się w Ameryce Północnej.
Aby skonfigurować przykładu
Przed utworzeniem nowego składnika skryptów, utworzyć połączenie, Menedżer i skonfigurować urządzenie źródłowe przepływ danych, które wybiera adres danych z przykładowej bazy danych AdventureWorks.W tym przykładzie, tylko wygląda kolumna CountryRegionName, można po prostu użyć widoku Person.vStateCountryProvinceRegion lub sprzęgania tabel Person.Address Person.StateProvince i Person.CountryRegion można wybrać dane.
Dodać nowy składnik skryptów do powierzchni projektanta przepływ danych i skonfigurować go jako transformacja.Otwórz Skrypt transformacja edytora.
Na Skrypt strona, zestaw the ScriptLanguage właściwość język skryptu, który ma być używany do kodu skryptu.
Click Edit Script to open Microsoft Visual Studio Tools for Applications (VSTA).
W Input0_ProcessInputRow Metoda, wpisz lub wklej przykładowy kod przedstawiony poniżej.
Zamknij VSTA.
Na Kolumny danych wejściowych strona, zaznacz kolumny, które mają być przetworzone w transformacja skryptów.W tym przykładzie użyto tylko kolumna CountryRegionName.Dostępne kolumny danych wejściowych, które pozostanie niezaznaczone będą po prostu być przesłany w przepływ danych bez zmian.
Na Wejść i wyjść strona, Dodaj nowy, drugie wyjściowy, a zestaw jego SynchronousInputID wartość do IDENTYFIKATORA dane wejściowe, która również jest wartością z SynchronousInputID Właściwość domyślne dane wyjściowe. Ustawianie ExclusionGroup Właściwość obu wyjść na samą wartość różną od zera (na przykład 1) oznacza, że każdy wiersz zostanie skierowany do tylko jednej z dwóch wyjść. Określ nowe dane wyjściowe błąd charakterystyczne nazwę, takie jak "MyErrorOutput. „
Dodawanie kolumn wyjściowych dodatkowe błędu nowe dane wyjściowe do przechwytywania informacje żądane błędu, które może zawierać kod błędu, identyfikator kolumna, w którym wystąpił błąd, a czasem także opis błędu.W tym przykładzie powoduje utworzenie nowych kolumn ErrorColumn i ErrorMessage.Jeśli są połowu wstępnie zdefiniowanych Integration Services błędy we własnych implementacji, upewnij się, że dodać kolumna Kod błędu dla danego kodu błędu.
Zanotuj wartość IDENTYFIKATORA wejściowy kolumna lub kolumn, które części skryptu będzie sprawdzał, czy warunki wystąpienia błędu.W tym przykładzie użyto tego identyfikatora kolumna do wypełniania wartość ErrorColumn.
Zamknij Skrypt transformacja edytora.
Podłącz wyjście składnika skryptów do odpowiednich miejsc docelowych.Płaski plików docelowych są najprostszym skonfigurować do testowania ad hoc.
Należy uruchomić pakiet.
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();
}
}
|
See Also