Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Środowisko SSIS Integration Runtime w usłudze Azure Data Factory
Chociaż nie można bezpośrednio skonfigurować wyjścia jako wyjścia błędu w komponencie skryptu do automatycznego przetwarzania wierszy błędu, można odtworzyć funkcjonalność wbudowanego wyjścia błędu, tworząc dodatkowe wyjście i używając logiki warunkowej w skrypcie, aby kierować wiersze na ten wynik, gdy jest to stosowne. Możesz chcieć naśladować zachowanie wbudowanego wyjścia błędu, dodając dwie dodatkowe kolumny wyjściowe, aby otrzymać numer błędu oraz ID kolumny, w której wystąpił błąd.
Jeśli chcesz dodać opis błędu odpowiadający konkretnemu predefiniowanemu kodowi błędu Integration Services, możesz użyć GetErrorDescription metody interfejsu IDTSComponentMetaData100 , dostępnej przez właściwość komponentu ComponentMetaData Script.
Example
Pokazany tutaj przykład wykorzystuje komponent skryptowy skonfigurowany jako transformacja, która ma dwa synchroniczne wyjścia. Celem komponentu Script jest filtrowanie wierszy błędu z danych adresowych w przykładowej bazie danych AdventureWorks. Ten fikcyjny przykład zakłada, że przygotowujemy promocję dla klientów z Ameryki Północnej i musimy odfiltrować adresy, które nie znajdują się w Ameryce Północnej.
Aby skonfigurować przykład
Przed utworzeniem nowego komponentu Script stwórz menedżera połączeń i skonfiguruj źródło przepływu danych, które wybiera dane adresowe z przykładowej bazy danych AdventureWorks. W tym przykładzie, który patrzy tylko na kolumnę CountryRegionName, możesz po prostu użyć widoku Person.vStateCountryProvinceRegion lub wybrać dane, łącząc tabele Person.Address, Person.StateProvince i Person.CountryRegion.
Dodaj nowy komponent skryptu do powierzchni projektanta Przepływ danych i skonfiguruj go jako transformację. Otwórz Edytor przekształceń skryptów.
Na stronie Script ustaw właściwość ScriptLanguage na język skryptu, którego chcesz użyć do kodowania skryptu.
Kliknij Edytuj skrypt, aby otworzyć Microsoft Visual Studio Narzędzia dla aplikacji (VSTA).
W metodzie Input0_ProcessInputRow wpisz lub wklej przykładowy kod pokazany poniżej.
Zamknij VSTA.
Na stronie Kolumny wejściowe wybierz kolumny, które chcesz przetworzyć w transformacji skryptu. Ten przykład używa tylko kolumny CountryRegionName. Dostępne kolumny wejściowe, które zostawiasz niezaznaczone, będą po prostu przekazywane bez zmian w przepływie danych.
Na stronie Wejścia i Wyjścia dodaj nowy, drugi wyjść i ustaw jego wartość SynchronousInputID na identyfikator wejścia, który jest jednocześnie wartością właściwości SynchronousInputID domyślnego wyjścia. Ustaw właściwość ExclusionGroup obu wyjść na tę samą niezerową wartość (na przykład 1), aby wskazać, że każdy wiersz będzie kierowany tylko do jednego z dwóch wyjść. Nadaj nowemu wyjściu błędu charakterystyczną nazwę, na przykład "MyErrorOutput".
Dodaj dodatkowe kolumny wyjściowe do nowego wyjścia błędu, aby uchwycić pożądane informacje o błędzie, które mogą obejmować kod błędu, identyfikator kolumny, w której wystąpił błąd, a także ewentualnie opis błędu. Ten przykład tworzy nowe kolumny: ErrorColumn i ErrorMessage. Jeśli wykrywasz błędy zdefiniowanych usług integracyjnych w swojej własnej implementacji, upewnij się, że dodasz kolumnę ErrorCode dla numeru błędu.
Zwróć uwagę na wartość ID kolumny wejściowej lub kolumn, które komponent Script sprawdzi pod kątem błędów. Ten przykład wykorzystuje ten identyfikator kolumny do wypełnienia wartości ErrorColumn.
Zamknij edytor transformacji skryptów.
Dołącz wyjścia komponentu Script do odpowiednich miejsc docelowych. Miejsca docelowe plików płaskich są najłatwiejsze do skonfigurowania do testów 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();
}
}