catalog.add_data_tap
Aplica-se a: SQL Server SSIS Integration Runtime no Azure Data Factory
Aplica-se: SQL Server
Adiciona um toque de dados à saída de um componente em um fluxo de dados de pacote, para uma instância da execução.
Sintaxe
catalog.add_data_tap [ @execution_id = ] execution_id
, [ @task_package_path = ] task_package_path
, [ @dataflow_path_id_string = ] dataflow_path_id_string
, [ @data_filename = ] data_filename
, [ @max_rows = ] max_rows
, [ @data_tap_id = ] data_tap_id OUTPUT
Argumentos
[ @execution_id = ] execution_id
A ID da execução que contém o pacote. O execution_id é um bigint.
[ @task_package_path = ] task_package_path
O caminho do pacote da tarefa de fluxo de dados. A propriedade PackagePath da tarefa de fluxo de dados especifica o caminho. O caminho diferencia maiúsculas de minúsculas. Para localizar o caminho do pacote, no SQL Server Data Tools, clique com o botão direito do mouse na tarefa Fluxo de Dados e, depois, clique em Propriedades. A propriedade PackagePath aparece na janela Propriedades.
O task_package_path é um nvarchar(max) .
[ @dataflow_path_id_string = ] dataflow_path_id_string
A cadeia de caracteres de identificação para o caminho de fluxo de dados. Um caminho conecta dois componentes de fluxos de dados. A propriedade IdentificationString do caminho especifica a cadeia de caracteres.
Para localizar a cadeia de caracteres de identificação, no SQL Server Data Tools, clique com o botão direito do mouse no caminho entre dois componentes de fluxo de dados e, depois, clique em Propriedades. A propriedade IdentificationString aparece na janela Propriedades.
O dataflow_path_id_string é um nvarchar(4000) .
[ @data_filename = ] data_filename
O nome do arquivo de dados que armazena os dados tocados. Se a tarefa de fluxo de dados for executada dentro de um contêiner de Loop Foreach ou Loop For, arquivos separados armazenarão os dados tocados para cada iteração do loop. Cada arquivo é prefixado com um número que corresponde a uma iteração.
Por padrão, o arquivo é armazenado na pasta <disco local>:\Arquivos de Programas\Microsoft SQL Server\130\DTS\DataDumps.
O data_filename é um nvarchar(4000) .
[ @max_rows = ] max_rows
O número de linhas capturadas durante o toque de dados. Se esse valor não for especificado, todas as linhas serão capturadas. O max_rows é um int.
[ @data_tap_id = ] data_tap_id
Retorna a ID do toque de dados. O data_tap_id é um bigint.
Exemplo
No exemplo a seguir, um toque de dados é criado no caminho do fluxo de dados, 'Paths[OLE DB Source.OLE DB Source Output]
, na tarefa de fluxo de dados, \Package\Data Flow Task
. Os dados coletados são armazenados no arquivo output0.txt
na pasta DataDumps (<disco local>:\Arquivos de Programas\Microsoft SQL Server\130\DTS\DataDumps).
Declare @execution_id bigint
Exec SSISDB.Catalog.create_execution @folder_name='Packages',@project_name='SSISPackages', @package_name='Package.dtsx',@reference_id=Null, @use32bitruntime=False, @execution_id=@execution_id OUTPUT
Exec SSISDB.Catalog.set_execution_parameter_value @execution_id,50, 'LOGGING_LEVEL', 0
Exec SSISDB.Catalog.add_data_tap @execution_id, @task_package_path='\Package\Data Flow Task', @dataflow_path_id_string = 'Paths[OLE DB Source.OLE DB Source Output]', @data_filename = 'output0.txt'
Exec SSISDB.Catalog.start_execution @execution_id
Comentários
Para adicionar toques de dados, a instância da execução deve estar no estado criado (um valor de 1 na coluna de status da exibição catalog.operations (Banco de Dados SSISDB)) . O valor de estado muda quando você realiza a execução. Você pode criar uma execução chamando catalog.create_execution (banco de dados SSISDB).
As seguintes são considerações a respeito do procedimento armazenado add_data_tap.
Se uma execução contiver um pacote pai e um ou mais pacotes filho, você precisará adicionar um toque de dados para cada pacote para o qual você deseja tocar dados.
Se um pacote contiver mais de uma tarefa de fluxo de dados com o mesmo nome, o task_package_path identificará exclusivamente a tarefa de fluxo de dados que contém a saída do componente tocado.
Quando você adiciona uma coleta de dados, ele não é validado antes de o pacote ser executado.
É recomendável limitar o número de linhas capturadas durante o toque de dados, para evitar gerar arquivos de dados grandes. Se a máquina na qual o procedimento armazenado é executado ficar sem espaço de armazenamento para os arquivos de dados, a execução do pacote será interrompida e uma mensagem de erro será gravada em um log.
A execução do procedimento armazenado add_data_tap impacta o desempenho do pacote. É recomendável executar o procedimento armazenado apenas para solucionar problemas de dados.
Para acessar o arquivo que armazena os dados tocados, você deve ser um administrador na máquina na qual o procedimento armazenado é executado. Você também deve ser o usuário que iniciou a execução que contém o pacote com o toque de dados.
Códigos de retorno
0 (êxito)
Quando há falha no procedimento armazenado, ele gera um erro.
Conjunto de resultados
Nenhum
Permissões
Este procedimento armazenado exige uma das seguintes permissões:
Permissões MODIFY na instância de execução
Associação à função de banco de dados ssis_admin
Associação à função de servidor sysadmin
Erros e avisos
A lista a seguir descreve as condições que podem provocar falha no procedimento armazenado.
O usuário não tem permissões MODIFY.
O toque de dados para o componente especificado, no pacote especificado, já foi adicionado.
O valor especificado para o número de linhas a serem capturadas não é válido.
Requisitos
Recursos externos
Entrada de blog, SSIS 2012: um olhar sobre fontes de dados, em rafael-salas.com.