Usar Expressões de Propriedade em Pacotes

Aplica-se a:SQL Server SSIS Integration Runtime no Azure Data Factory

Uma expressão de propriedade é uma expressão atribuída a uma propriedade para ativar uma atualização dinâmica da propriedade no tempo de execução. Por exemplo, uma expressão de propriedade pode atualizar a linha “Para” usada por uma tarefa Enviar E-mail, inserindo um endereço de e-mail armazenado em uma variável.

Uma expressão pode ser adicionada a um pacote, uma tarefa, um Foreach Loop, um For Loop, uma Sequence, um enumerador Foreach, um manipulador de eventos, um gerenciador de conexões no nível do pacote ou do projeto, ou um provedor de logs. Qualquer propriedade desses objetos que seja de leitura e gravação pode implementar uma expressão de propriedade. Integration Services também dá suporte ao uso de expressões de propriedade em algumas propriedades personalizadas de componentes de fluxo de dados. As variáveis e as restrições de precedência não oferecem suporte às expressões de propriedade, mas elas incluem propriedades especiais que permitem o uso de expressões.

As expressões de propriedade podem ser atualizadas de diferentes maneiras:

  • As variáveis definidas pelo usuário podem ser incluídas nas configurações do pacote e podem ser atualizadas quando o pacote for implantado. No momento da execução, a expressão de propriedade é avaliada usando o valor atualizado da variável.

  • As variáveis de sistema que estão incluídas em expressões são atualizadas no tempo de execução, que altera os resultados da avaliação de propriedade.

  • As funções de data e hora são avaliadas no momento da execução e fornecem valores atualizados às expressões de propriedade.

  • As variáveis nas expressões podem ser atualizadas pelos scripts executados pela tarefa Script e pelo componente Script.

As expressões são criadas com a linguagem da expressão do Microsoft Integration Services. As expressões podem usar variáveis de sistema ou definidas pelo usuário, junto com operadores, funções e conversões de tipo fornecidos pela linguagem da expressão.

Observação

Os nomes das variáveis definidas pelo usuário e das variáveis do sistema fazem distinção entre maiúsculas e minúsculas.

Para obter mais informações, confira Expressões do Integration Services (SSIS).

Um importante uso das expressões de propriedade é personalizar configurações para cada instância implantada de um pacote. Isso permite atualizar dinamicamente as propriedades de pacote para diferentes ambientes. Por exemplo, é possível criar uma expressão de propriedade que atribua uma variável à cadeia de caracteres de conexão de um gerenciador de conexões, além de atualizar a variável quando o pacote for implantado, verificando se a cadeia de caracteres de conexão está correta no tempo de execução. As configurações de pacote são carregadas antes de as expressões de propriedade serem avaliadas.

Uma propriedade pode usar só uma expressão de propriedade e uma expressão de propriedade só pode ser aplicada a uma propriedade. Entretanto, você pode construir várias expressões de propriedade idênticas e atribuí-las a diferentes propriedades.

Algumas propriedades são definidas usando valores de enumeradores. Ao fazer referência ao membro do enumerador em uma expressão de propriedade, é preciso usar valores numéricos equivalentes ao nome amigável do membro do enumerador. Por exemplo, se uma expressão de propriedade define a propriedade LoggingMode , que usa um valor da enumeração DTSLoggingMode , a expressão de propriedade deve usar 0, 1 ou 2 em vez dos nomes amigáveis Enabled, Disabledou UseParentSetting. Para obter mais informações, consulte Constantes enumeradas em expressões de propriedade.

Interface do Usuário para Expressão de Propriedade

O Integration Services fornece um conjunto de ferramentas para criar e gerenciar expressões de propriedade.

  • A página Expressões, localizada nos editores personalizados para tarefas, no contêiner For Loop e nos contêineres Foreach. A página Expressões permite editar expressões e visualizar uma lista das expressões de propriedades que uma tarefa, um Loop Foreach ou um Loop For usa.

  • A janela Propriedades , para editar expressões e visualizar uma lista de expressões de propriedade usada por um pacote ou por objetos do pacote.

  • A caixa de diálogo Editor de Expressões de Propriedade , para criar, atualizar e excluir expressões de propriedade.

  • A caixa de diálogo Construtor de Expressões , para construir uma expressão usando as ferramentas gráficas. A caixa de diálogo Construtor de Expressões pode avaliar as expressões para sua análise sem atribuir o resultado da avaliação à propriedade.

O diagrama a seguir mostra as interfaces de usuário usadas para adicionar, alterar e remover as expressões de propriedade.

Interface do usuário para expressões de propriedade

Na janela Propriedades e na página Expressões, clique no botão de procura (...) no nível da coleção Expressões para abrir a caixa de diálogo Editor de Expressões de Propriedade. O Editor de Expressões de Propriedade permite mapear uma propriedade para uma expressão e digitar uma expressão de propriedade. Se desejar usar ferramentas gráficas de expressão para criar e validar uma expressão, clique no botão Procurar (…) no nível de expressão para abrir a caixa de diálogo Construtor de Expressões e crie ou modifique (e, se desejar, avalie) a expressão.

Você também pode abrir a caixa de diálogo Construtor de Expressões na caixa de diálogo Editor de Expressões de Propriedade .

Trabalhar com expressões de propriedades

Definindo as Expressões de Propriedade dos Componentes de Fluxo de Dados

Se você construir um pacote no SQL Server Data Tools (SSDT), as propriedades dos componentes de fluxo de dados que dão suporte às expressões de propriedade estarão expostas na tarefa de Fluxo de Dados à qual pertencem. Para adicionar, alterar e remover as expressões de propriedade dos componentes de fluxo de dados, clique com o botão direito do mouse na tarefa Fluxo de Dados do fluxo de dados ao qual os componentes de fluxo pertencem e clique em Propriedades. A janela Propriedades lista as propriedades de componentes de fluxo de dados com as quais você pode usar as expressões de propriedade. Por exemplo, para criar ou modificar uma expressão de propriedade para a propriedade SamplingValue de uma transformação Row Sampling em um fluxo de dados chamado SampleCustomer, clique com o botão direito do mouse na tarefa Fluxo de Dados do fluxo de dados ao qual a transformação Row Sampling pertence e clique em Propriedades. A propriedade SamplingValue é listada na janela Propriedades e tem o formato [SampleCustomer]. [SamplingValue].

Na janela Propriedades, você adiciona, altera e remove as expressões de propriedade dos componentes de fluxo de dados da mesma maneira como as expressões de propriedade de outros tipos de objetos do Integration Services . A janela de Propriedades também permite acessar as várias caixas de diálogo e construtores que você usa para adicionar, alterar ou remover expressões de propriedade dos componentes de fluxo de dados. Para obter mais informações sobre as propriedades dos componentes de fluxo de dados que podem ser atualizadas por expressões de propriedade, consulte Propriedades personalizadas de transformação.

Carregando Expressões de Propriedade

Você não pode especificar nem controlar quando as expressões de propriedade são carregadas. As expressões de propriedade são avaliadas e carregadas quando o pacote e os objetos do pacote são validados. A validação ocorre quando você salva o pacote, abre o pacote no Designer SSIS e executa o pacote.

No entanto, os valores atualizados das propriedades dos objetos do pacote que usam a expressão de propriedade no Designer SSIS não poderão ser visualizados enquanto você não salvar o pacote, executá-lo ou reabri-lo após adicionar as expressões de propriedade.

As expressões de propriedade associadas a diferentes tipos de objetos – gerenciadores de conexões, provedores de logs e enumeradores – também são carregados quando os métodos específicos a esse tipo de objeto são chamados. Por exemplo, as propriedades de gerenciadores de conexões são carregadas antes que Integration Services criasse uma instância da conexão.

As expressões de propriedade são carregadas depois que as configurações de pacote são carregadas. Por exemplo, as variáveis são atualizadas primeiro pelas suas configurações e depois as expressões de propriedade que usam as variáveis são avaliadas e carregadas. Isso significa que as expressões de propriedade sempre usam os valores de variáveis que são definidos pelas configurações.

Observação

Você não pode usar a opção Set do utilitário dtexec para preencher uma expressão de propriedade.

A tabela a seguir apresenta um resumo de quando as expressões de propriedades do Integration Services são avaliadas e carregadas.

Tipo de objeto Carregar e avaliar
Pacote, Loop Foreach, Loop For, Sequência, tarefas e componentes de fluxo de dados Após carregar as configurações

Antes da validação

Antes da execução
Gerenciadores de conexões Após carregar as configurações

Antes da validação

Antes da execução

Antes de criar uma instância de conexão
Provedores de logs Após carregar as configurações

Antes da validação

Antes da execução

Antes de abrir os logs
Enumeradores Foreach Após carregar as configurações

Antes da validação

Antes da execução

Antes de cada enumeração do loop

Usando expressões de propriedade no loop foreach

Geralmente é útil implementar uma expressão de propriedade para definir o valor da propriedade ConnectionString dos gerenciadores de conexões que são usados dentro do contêiner Loop Foreach. Depois que o enumerador mapeia seu valor atual para uma variável em cada iteração do loop, a expressão de propriedade pode usar o valor dessa variável para atualizar o valor da propriedade ConnectionString dinamicamente.

Se você quiser usar expressões de propriedades com a propriedade ConnectionString dos gerenciadores de conexão File, Multiple Files, Flat Files e Multiple Flat Files que um Loop Foreach usa, há algumas coisas que você deve considerar. Um pacote pode ser configurado para executar vários arquivos executáveis simultaneamente definindo a propriedade MaxConcurrentExecutables como um valor maior que 1 ou com o valor -1. Um valor definido como -1 permite o número máximo de arquivos executáveis sendo executados simultaneamente para igualar o número de processadores mais dois. Para evitar consequências negativas da execução paralela de executáveis, o valor de MaxConcurrentExecutables deveria ser definido como 1. Se MaxConcurrentExecutables não for definido como 1, o valor da propriedade ConnectionString não poderá ser garantido e os resultados serão imprevisíveis.

Por exemplo, considere um Loop Foreach que enumera arquivos em uma pasta, recupera os nomes de arquivo e usa uma tarefa Executar SQL para inserir cada nome de arquivos em uma tabela. Se MaxConcurrentExecutables não for definido como 1, poderão ocorrer conflitos de gravação se duas instâncias da tarefa Executar SQL tentarem gravar dados na tabela ao mesmo tempo.

Expressões de Propriedades de Exemplo

As expressões de exemplo a seguir mostram como usar as variáveis de sistema, operadores, funções e literais de cadeia de caracteres em expressões de propriedade.

Expressão de Propriedade para a Propriedade LoggingMode de um Pacote

A expressão de propriedade a seguir pode ser usada para definir a propriedade LoggingMode de um pacote. A expressão usa as funções DAY e GETDATE para obter um valor inteiro que representa a parte de dia de uma data. Se o dia for 1º ou 15º, o registro em log será ativado; caso contrário, o registro em log será desativado. O valor 1 é o número inteiro equivalente do membro do enumerador LoggingMode Enablede o valor 2 é o inteiro equivalente ao membro Disabled. Na expressão, você deve usar o valor numérico em vez do nome do membro do enumerador.

DAY((DT_DBTIMESTAMP)GETDATE())==1||DAY((DT_DBTIMESTAMP)GETDATE())==15?1:2

Expressão de propriedade do assunto de uma mensagem de e-mail

A expressão de propriedade a seguir pode ser usada para definir a propriedade Subject da tarefa Send Mail e fornecer um assunto de e-mail útil. As expressões usam uma combinação de literais de cadeia de caracteres, variáveis de sistema, concatenação (+) e operadores de conversão, além das funções DATEDIFF e GETDATE. As variáveis de sistema são as variáveis PackageName e StartTime .

"PExpression-->Package: (" + @[System::PackageName] + ") Started:"+ (DT_WSTR, 30) @[System::StartTime] + " Duration:" + (DT_WSTR,10) (DATEDIFF( "ss", @[System::StartTime] , GETDATE() )) + " seconds"

Se o nome do pacote for EmailRowCountPP, tiver sido executado em 3/4/2005 e a duração da execução for de 9 segundos, a expressão será avaliada como a seguinte cadeia de caracteres.

PExpression-->Pacote: (EmailRowCountPP) Iniciado em:3/4/2005 às 11:06:18 Duração:9 segundos.

Expressão de Propriedade para a Mensagem de uma Mensagem de Email

A seguinte expressão de propriedade pode ser usada para configurar a propriedade MessageSource da tarefa Enviar Email. A expressão usa uma combinação de literais de cadeia de caracteres, variáveis definidas pelo usuário e o operador de concatenação (+). As variáveis definidas pelo usuário são chamadas de nasdaqrawrows, nyserawrowse amexrawrows. A sequência "\n" indica um retorno de carro.

"Rows Processed: " + "\n" +" NASDAQ: " + (dt_wstr,9)@[nasdaqrawrows] + "\n" + " NYSE: " + (dt_wstr,9)@[nyserawrows] + "\n" + " Amex: " + (dt_wstr,9)@[amexrawrows]

Se nasdaqrawrows é 7058, nyserawrows é 3528 e amexrawrows é 1102, a expressão resultará na seguinte cadeia de caracteres.

Linhas Processadas:

NASDAQ: 7058

NYSE: 3528

AMEX: 1102

Expressão de Propriedade para a Propriedade Executável da Tarefa Executar Processo

A expressão de propriedade a seguir pode ser usada para definir a propriedade Executable da tarefa Executar Processo. A expressão usa uma combinação de literais de string, operadores e funções. Ela também usa as funções DATEPART e GETDATE, além do operador condicional.

DATEPART("weekday", GETDATE()) ==2?"notepad.exe":"mspaint.exe"

Se for o segundo dia da semana, a tarefa Executar Processo executará o notepad.exe; caso contrário, a tarefa executará o arquivo mspaint.exe.

Expressão de Propriedade para a Propriedade ConnectionString de um Gerenciador de Conexões de Arquivos Simples

A expressão de propriedade a seguir pode ser usada para definir a propriedade ConnectionString de um gerenciador de conexões Flat File. A expressão usa apenas uma variável definida pelo usuário, myfilenamefull, que contém o caminho para um arquivo de texto.

@[User::myfilenamefull]

Observação

As expressões de propriedade para os gerenciadores de conexões só podem ser acessadas usando a janela Propriedades. Para exibir as propriedades para um gerenciador de conexões, você deve selecionar o gerenciador de conexões na área Gerenciadores de Conexões do Designer do SSIS quando abrir a janela Propriedades ou clicar com o botão direito do mouse no gerenciador de conexões e selecionar Propriedades.

Expressão de Propriedade para a Propriedade ConfigString de um Provedor de Logs do Arquivo de Texto

A expressão de propriedade a seguir pode ser usada para definir a propriedade ConfigString de um provedor de log de arquivo de texto. A expressão usa apenas uma variável definida pelo usuário, varConfigString, que contém o nome do gerenciador de conexões do Arquivo a ser usado. O gerenciador de conexões de Arquivo especifica o caminho do arquivo de texto para o qual as entradas de log são gravadas.

@[User::varConfigString]

Observação

As expressões de propriedade para os provedores de logs só podem ser acessadas usando a janela Propriedades. Para exibir as propriedades de um provedor de logs, selecione o provedor de logs na guia Explorador de Pacotes do Designer do SSIS ao abrir a janela Propriedades ou clique com o botão direito do mouse no provedor de logs no Explorador de Pacotes e clique em Propriedades.