Symulowanie wyjściowe błąd składnika skryptów
Chociaż wyjściowe nie można bezpośrednio konfigurować jako komunikaty o błędach wyświetlane w składniku skrypt automatycznej obsługi wierszy błędów, można odtworzyć funkcje wbudowane komunikaty o błędach wyświetlane tworzenia dodatkowej produkcji i używając warunkowe logiki skryptu do bezpośredniego wierszy do tej wyjścia, w stosownych przypadkach.Możesz naśladowania zachowanie wbudowane komunikaty o błędach wyświetlane przez dodanie dwóch kolumn dodatkowej produkcji, aby otrzymać numer błędu i identyfikator kolumna, w której wystąpił błąd.
Jeśli chcesz dodać do wstępnie określonej opis błędu, który odpowiada Integration Services Kod błędu, można użyć GetErrorDescription metoda IDTSComponentMetaData100 interfejs dostępne za pośrednictwem składnika skryptów ComponentMetaData właściwość.
Przykład
Tu przykładzie wykorzystuje składnik skryptów skonfigurowany jako transformacja, które ma dwa wyjścia synchronicznych.Składnik skryptów ma na celu filtrowanie wierszy błąd danych adres w AdventureWorks2008R2 przykładowej bazy danych.Fikcyjne założono możemy 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ład
Przed utworzeniem nowego składnika skryptów, należy utworzyć połączenie, Menedżer i skonfigurować przepływ danych źródło, które wybiera adres danych z AdventureWorks2008R2 przykładowej bazy danych.W tym przykładzie, która przegląda tylko CountryRegionName kolumna, można po prostu użyć Person.vStateCountryProvinceRegion Widok, lub można wybrać dane przez dołączenie do Person.Address, Person.StateProvince, i Person.CountryRegion tabele.
Dodaj nowy składnik skryptów do powierzchni projektanta przepływu danych i skonfiguruj ją jako transformacja.Otwórz Script Editor transformacji.
Na skryptu strona, zestaw ScriptLanguage właściwość język skryptu, który chcesz używać 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 wprowadzania strona, zaznacz kolumny, które mają być przetworzone w transformacja skryptu.W tym przykładzie użyto tylko CountryRegionName kolumna.Dostępne kolumny wejściowych, które pozostanie niezaznaczone będą po prostu przekazywane za pośrednictwem niezmienione w przepływ danych.
Na wejść i wyjść strona, Dodaj nowy, drugie wyjściowe, i zestaw jego SynchronousInputID wartość ID wprowadzania, która również jest wartością z SynchronousInputID właściwość domyślne dane wyjściowe.Ustaw ExclusionGroup właściwość zarówno wyjść na niezerową wartość (na przykład 1) oznacza, że każdy wiersz będzie kierowane tylko do jednego z dwóch wyjść.Podać nowe dane wyjściowe błąd charakterystyczne nazwy, takie jak "myerroroutput"
Dodawanie kolumn wyjściowych dodatkowe błędu nowe dane wyjściowe do przechwytywania błędu żądane informacje, które mogą zawierać kod błędu, identyfikator kolumna, w którym wystąpił błąd, i ewentualnie opis błędu.W tym przykładzie tworzy nowe kolumny ErrorColumn i komunikat o błędzie.Jeśli są połowu wstępnie Integration Services błędy w implementacji własnych, upewnij się dodać kolumna ErrorCode numer błędu.
Zanotuj wartość Identyfikatora wprowadzania kolumna lub kolumn, które składnik skryptów będzie sprawdzał błędów.W tym przykładzie użyto tego identyfikatora kolumna do wypełniania wartość ErrorColumn.
Zamknij transformacji edytora skryptów.
Podłącz wyjście składnik skryptów do odpowiednich miejsc docelowych.Miejsca docelowe pliku prostego są najprostszym skonfigurować badania ad hoc.
Uruchom 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();
}
}
|