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
Ve výchozím nastavení obsahují dva další sloupce ve výstupu chyby Integration Services, ErrorCode a ErrorColumn, pouze číselné kódy, které představují chybové číslo a ID sloupce, ve kterém chyba nastala. Tyto číselné hodnoty mohou být omezeně užitečné bez odpovídajícího popisu chyby a názvu sloupce.
Toto téma popisuje, jak přidat popis chyby a název sloupce k existujícím výstupním datům chyb v datovém toku pomocí komponenty Script. Příklad přidává popis chyby, který odpovídá specifickému předdefinovanému chybovému kódu Integration Services pomocí GetErrorDescription metody IDTSComponentMetaData100 rozhraní, která je dostupná prostřednictvím ComponentMetaData vlastnosti komponenty Script. Poté příklad přidá název sloupce, který odpovídá zachycenému ID rodokmenu pomocí GetIdentificationStringByID metody stejného rozhraní.
Note
Pokud chcete vytvořit komponentu, kterou budete moci snáze znovu použít napříč více Tok dat úkoly a více balíčky, zvažte použití kódu z této ukázky Script komponenty jako výchozího bodu pro vlastní komponentu data flow. Další informace naleznete v tématu Vývoj vlastní komponenty toku dat.
Example
Příklad zde ukazuje použití skriptní komponenty nakonfigurované jako transformace, která přidává popis chyby a název sloupce k existujícím výstupním datům chyb v datovém toku.
Pro více informací o tom, jak nakonfigurovat komponentu Script pro použití jako transformace v datovém toku, viz Vytvoření synchronní transformace s komponentou Script a Vytvoření asynchronní transformace s komponentou Script.
Pro konfiguraci tohoto příkladu Script Component
Před vytvořením nové komponenty Script nakonfigurujte upstream komponentu v datovém toku tak, aby přesměrovala řádky na svůj chybový výstup, když dojde k chybě nebo zkrácení. Pro testování můžete chtít nakonfigurovat komponentu tak, aby se zajistila chyba – například konfigurací transformace Lookup mezi dvěma tabulkami, kde vyhledávání selže.
Přidejte novou komponentu Script na povrch návrháře Tok dat a nakonfigurujte ji jako transformaci.
Připojte chybový výstup z upstream komponenty k nové komponentě Script.
Otevřete Script Transformation Editor a na stránce Script , ve vlastnosti ScriptLanguage , vyberte skriptový jazyk.
Klikněte na Edit Script a otevřete IDE Microsoft Visual Studio Tools for Applications (VSTA) a přidejte ukázkový kód uvedený níže.
Zavřít VSTA.
V editoru transformace skriptů na stránce Vstupní sloupce vyberte sloupce ErrorCode a ErrorColumn.
Na stránce Vstupy a Výstupy přidejte dva nové sloupce.
Přidejte nový výstupní sloupec typu String s názvem ErrorDescription. Zvýšit výchozí délku nového sloupce na 255, aby podporoval dlouhé zprávy.
Přidejte další nový výstupní sloupec typu String s názvem ColumnName. Zvýšit výchozí délku nového sloupce na 255, aby podpořil dlouhé hodnoty.
Zavřete editor transformace scénáře.
Připojte výstup komponenty Script k vhodnému cíli. Flat File destination je nejjednodušší pro konfiguraci pro ad hoc testování.
Spusťte balíček.
Public Class ScriptMain ' VB
Inherits UserComponent
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Row.ErrorDescription = _
Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)
Dim componentMetaData130 = TryCast(Me.ComponentMetaData, IDTSComponentMetaData130)
If componentMetaData130 IsNot Nothing Then
If Row.ErrorColumn = 0 Then
' 0 means no specific column is identified by ErrorColumn, this time.
Row.ColumnName = "Check the row for a violation of a foreign key constraint."
ELSE If Row.ErrorColumn = -1 Then
' -1 means you are using Table Lock for a Memory Optimised destination table which is not supported.
Row.ColumnName = "Table lock is not compatible with Memory Optimised tables."
Else
Row.ColumnName = componentMetaData130.GetIdentificationStringByID(Row.ErrorColumn)
End If
End If
End Sub
End Class
public class ScriptMain: // C#
UserComponent
{
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);
var componentMetaData130 = this.ComponentMetaData as IDTSComponentMetaData130;
if (componentMetaData130 != null)
{
// 0 means no specific column is identified by ErrorColumn, this time.
if (Row.ErrorColumn == 0)
{
Row.ColumnName = "Check the row for a violation of a foreign key constraint.";
}
// -1 means you are using Table Lock for a Memory Optimised destination table which is not supported.
else if (Row.ErrorColumn == -1)
{
Row.ColumnName = "Table lock is not compatible with Memory Optimised tables.";
}
else
{
Row.ColumnName = componentMetaData130.GetIdentificationStringByID(Row.ErrorColumn);
}
}
}
}