Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
SSIS Integration Runtime em Azure Data Factory
Embora não possa configurar diretamente uma saída como saída de erro no componente Script para o tratamento automático das linhas de erro, pode reproduzir a funcionalidade de uma saída de erro incorporada criando uma saída adicional e usando lógica condicional no seu script para direcionar as linhas para essa saída quando apropriado. Pode querer imitar o comportamento de uma saída de erro incorporada adicionando duas colunas de saída adicionais para receber o número de erro e o ID da coluna onde ocorreu o erro.
Se quiser adicionar a descrição de erro correspondente a um código de erro específico dos Serviços de Integração pré-definidos, pode usar o GetErrorDescription método da IDTSComponentMetaData100 interface, disponível através da propriedade do ComponentMetaData componente Script.
Example
O exemplo aqui mostrado utiliza um componente Script configurado como uma transformação que tem duas saídas síncronas. O objetivo do componente Script é filtrar linhas de erro dos dados de endereço na base de dados de exemplo AdventureWorks. Este exemplo fictício assume que estamos a preparar uma promoção para clientes norte-americanos e precisamos de filtrar endereços que não estejam localizados na América do Norte.
Para configurar o exemplo
Antes de criar o novo componente Script, crie um gestor de ligações e configure uma fonte de fluxo de dados que selecione dados de endereço da base de dados de exemplo AdventureWorks. Neste exemplo, que apenas vê a coluna PaísRegiãoNome, pode simplesmente usar a vista Pessoa.vEstadoPaísProvíncia, ou pode selecionar dados juntando as tabelas Pessoa.Endereço, Pessoa.EstadoProvíncia e Pessoa.PaísRegião.
Adicione um novo componente Script à superfície do Fluxo de Dados designer e configure-o como uma transformação. Abre o Editor de Transformação de Scripts.
Na página de Script , defina a propriedade ScriptLanguage para a linguagem de script que pretende usar para programar o script.
Clique em Editar Script para abrir Microsoft Visual Studio Ferramentas para Aplicações (VSTA).
No método Input0_ProcessInputRow , digite ou cole o código de exemplo mostrado abaixo.
Fecha VSTA.
Na página de Colunas de Entrada , selecione as colunas que quer processar na transformação Script. Este exemplo utiliza apenas a coluna PaísNomeRegião. As colunas de entrada disponíveis que deixar por selecionar serão simplesmente passadas sem alterações no fluxo de dados.
Na página de Entradas e Saídas , adicione uma nova segunda saída e defina o seu valor SynchronousInputID para o ID da entrada, que é também o valor da propriedade SynchronousInputID da saída predefinida. Defina a propriedade ExclusionGroup de ambas as saídas para o mesmo valor não nulo (por exemplo, 1) para indicar que cada linha será direcionada apenas para uma das duas saídas. Dê à nova saída de erro um nome distintivo, como "MyErrorOutput."
Adicionar colunas de saída adicionais à nova saída de erro para capturar a informação de erro desejada, que pode incluir o código de erro, o ID da coluna onde o erro ocorreu e, possivelmente, a descrição do erro. Este exemplo cria as novas colunas, ErrorColumn e ErrorMessage. Se estiver a detetar erros pré-definidos nos Serviços de Integração na sua própria implementação, certifique-se de adicionar uma coluna ErrorCode para o número de erro.
Note o valor ID da coluna ou colunas de entrada que o componente Script irá verificar para condições de erro. Este exemplo utiliza este identificador de coluna para preencher o valor ErrorColumn.
Feche o editor de transformação de guiões.
Anexe as saídas do componente Script a destinos adequados. Os destinos de ficheiros planos são os mais fáceis de configurar para testes ad hoc.
Execute o pacote.
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();
}
}