Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
SSIS Integration Runtime v rámci Azure Data Factory
Ačkoliv nelze přímo nastavit výstup jako chybový výstup v komponentě Script pro automatické zpracování chybových řádků, můžete funkčnost vestavěného chybového výstupu reprodukovat vytvořením dalšího výstupu a použitím podmíněné logiky ve vašem skriptu, která v případě potřeby směruje řádky na tento výstup. Můžete chtít napodobit chování vestavěného výstupu chyby přidáním dvou dalších výstupních sloupců, které přijmou chybové číslo a ID sloupce, ve kterém chyba nastala.
Pokud chcete přidat popis chyby, který odpovídá specifickému předdefinovanému chybovému kódu Integration Services, můžete použít metodu GetErrorDescriptionIDTSComponentMetaData100 rozhraní, která je dostupná přes vlastnost komponenty ComponentMetaData Script.
Example
Příklad zde ukazuje použití skriptní komponenty konfigurované jako transformace, která má dva synchronní výstupy. Účelem komponenty Script je filtrovat chybové řádky z adresních dat v databázi AdventureWorks. Tento fiktivní příklad předpokládá, že připravujeme akci pro zákazníky v Severní Americe a potřebujeme filtrovat adresy, které se nenacházejí v Severní Americe.
Pro konfiguraci příkladu
Před vytvořením nové komponenty Script vytvořte správce spojení a nakonfigurujte zdroj datového toku, který vybírá adresní data ze vzorové databáze AdventureWorks. Pro tento příklad, který se dívá pouze na sloupec CountryRegionName, můžete jednoduše použít pohled Person.vStateCountryProvinceRegion, nebo vybrat data spojením tabulek Person.Address, Person.StateProvince a Person.CountryRegion.
Přidejte novou komponentu Script na povrch návrháře Tok dat a nakonfigurujte ji jako transformaci. Otevřete Editor transformace skriptů.
Na stránce Script nastavte vlastnost ScriptLanguage na jazyk skriptu, který chcete použít k naprogramování skriptu.
Klikněte na Edit Script pro otevření Microsoft Visual Studio Tools for Applications (VSTA).
V metodě Input0_ProcessInputRow napište nebo vložte ukázkový kód uvedený níže.
Zavřít VSTA.
Na stránce Vstupní sloupce vyberte sloupce, které chcete zpracovat v transformaci skriptu. Tento příklad používá pouze sloupec CountryRegionName. Dostupné vstupní sloupce, které necháte nevybrané, budou jednoduše procházet beze změny v datovém toku.
Na stránce Vstupy a Výstupy přidejte nový, druhý výstup a nastavte jeho hodnotu SynchronousInputID na ID vstupu, což je zároveň hodnota vlastnosti SynchronousInputID výchozího výstupu. Nastavte vlastnost ExclusionGroup obou výstupů na stejnou nenulovou hodnotu (například 1), aby bylo jasné, že každý řádek bude směrován pouze na jeden ze dvou výstupů. Dát novému chybovému výstupu jedinečný název, například "MyErrorOutput."
Přidejte další výstupní sloupce k novému chybovému výstupu, abyste zachytili požadované informace o chybě, které mohou zahrnovat chybový kód, ID sloupce, ve kterém chyba nastala, a případně i popis chyby. Tento příklad vytváří nové sloupce, ErrorColumn a ErrorMessage. Pokud zaznamenáváte předdefinované chyby Integration Services ve své vlastní implementaci, nezapomeňte přidat sloupec ErrorCode pro číslo chyby.
Všimněte si hodnoty ID vstupního sloupce nebo sloupců, které komponenta Script kontroluje na chybové stavy. Tento příklad používá tento identifikátor sloupce k naplnění hodnoty ErrorColumn.
Zavřete editor transformace scénáře.
Připojte výstupy komponenty Script k vhodným cílům. Ploché destinace souborů jsou nejjednodušší na konfiguraci pro ad hoc testování.
Spusťte balíček.
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();
}
}