Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
SSIS Integration Runtime em Azure Data Factory
Uma expressão de propriedade é uma expressão atribuída a uma propriedade para habilitar a atualização dinâmica da propriedade em tempo de execução. Por exemplo, uma expressão de propriedade pode atualizar o campo Para que uma tarefa de Envio de Email utiliza, inserindo um endereço de email armazenado numa variável.
Uma expressão pode ser adicionada a um pacote, tarefa, Foreach Loop, For Loop, Sequence, enumerador Foreach, manipulador de eventos, um gerenciador de conexões de nível de pacote ou projeto ou provedor de log. Qualquer propriedade desses objetos que seja de leitura e escrita pode implementar uma expressão de propriedade. O Integration Services também oferece suporte ao uso de expressões de propriedade em algumas propriedades personalizadas de componentes de fluxo de dados. Variáveis e restrições de precedência não oferecem suporte a expressões de propriedade, mas incluem propriedades especiais nas quais você pode usar 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, em seguida, atualizadas quando o pacote é implantado. Em tempo de execução, a expressão de propriedade é avaliada usando o valor da variável atualizada.
As variáveis de sistema incluídas nas expressões são atualizadas em tempo de execução, o que altera os resultados da avaliação da propriedade.
As funções de data e hora são avaliadas em tempo de execução e fornecem os valores atualizados para expressões de propriedade.
As variáveis em expressões podem ser atualizadas pelos scripts executados pela tarefa Script e pelo componente Script.
As expressões são criadas usando a linguagem de expressão Microsoft Integration Services. As expressões podem usar variáveis definidas pelo sistema ou pelo usuário, juntamente com os operadores, funções e tipos que a linguagem de expressão fornece.
Observação
Os nomes das variáveis definidas pelo utilizador e as do sistema são sensíveis a maiúsculas e minúsculas.
Para obter mais informações, consulte Expressões dos Serviços de Integração (SSIS).
Um uso importante de expressões de propriedade é personalizar configurações para cada instância implantada de um pacote. Isso torna possível atualizar dinamicamente as propriedades do pacote para diferentes ambientes. Por exemplo, você pode criar uma expressão de propriedade que atribua uma variável à cadeia de conexão de um gerenciador de conexões e, em seguida, atualizar a variável quando o pacote for implantado, garantindo que a cadeia de conexão esteja correta em tempo de execução. As configurações de pacote são carregadas antes que as expressões de propriedade sejam avaliadas.
Uma propriedade pode usar apenas uma expressão de propriedade e uma expressão de propriedade pode se aplicar somente a uma propriedade. No entanto, você pode criar várias expressões de propriedade idênticas e atribuí-las a propriedades diferentes.
Algumas propriedades são definidas usando valores de enumeradores. Quando você faz referência ao membro do enumerador em uma expressão de propriedade, você deve usar o valor numérico que é equivalente 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, Disabled ou UseParentSetting. Para obter mais informações, consulte Constantes enumeradas em expressões de propriedade.
Interface de usuário do Property Expression
O Integration Services fornece um conjunto de ferramentas para criar e gerenciar expressões de propriedade.
A página Expressões, encontrada nos editores personalizados para tarefas, no container For Loop e nos containers Foreach. A página Expressões permite editar expressões e exibir uma lista das expressões de propriedade que uma tarefa, Foreach Loop ou For Loop usa.
A janela Propriedades , para editar expressões e exibir uma lista das expressões de propriedade que um pacote ou objetos de pacote usam.
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 criar uma expressão usando ferramentas gráficas. A caixa de diálogo Construtor de Expressões pode avaliar expressões para sua revisão sem atribuir o resultado da avaliação à propriedade.
O diagrama a seguir mostra as interfaces de usuário que você usa para adicionar, alterar e remover expressões de propriedade.
Na janela Propriedades e na página Expressões, clique no botão de pesquisa (...) no nível da coleção de 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 as ferramentas de expressão gráfica para criar e validar a expressão, clique no botão Procurar (...) no nível da expressão para abrir a caixa de diálogo Construtor de Expressões e, em seguida, crie ou modifique e, opcionalmente, valide 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 .
Para trabalhar com expressões de propriedade
Definindo expressões de propriedade de componentes de fluxo de dados
Se você construir um pacote no SSDT (SQL Server Data Tools), as propriedades dos componentes de fluxo de dados que oferecem suporte a expressões de propriedade serão expostas na tarefa 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 para o fluxo de dados ao qual os componentes de fluxo de dados pertencem e clique em Propriedades. A janela Propriedades lista as propriedades dos componentes de fluxo de dados com os quais você pode usar expressões de propriedade. Por exemplo, para criar ou modificar uma expressão de propriedade para a propriedade SamplingValue de uma transformação de Amostragem de Linha num fluxo de dados chamado SampleCustomer, clique com o botão direito do rato na tarefa de Fluxo de Dados do fluxo de dados ao qual a transformação de Amostragem de Linha pertence e clique em Propriedades. A propriedade SamplingValue está listada na janela Propriedades e tem o formato [SampleCustomer].[SamplingValue].
Na janela Propriedades, você adiciona, altera e remove expressões de propriedade para componentes de fluxo de dados da mesma forma que expressões de propriedade para outros tipos de objeto do Integration Services. A janela Propriedades também fornece acesso às várias caixas de diálogo e construtores que você usa para adicionar, alterar ou remover expressões de propriedade para componentes de fluxo de dados. Para obter mais informações sobre as propriedades dos componentes de fluxo de dados que podem ser atualizados por expressões de propriedade, consulte Propriedades personalizadas de transformação.
Carregando Expressões de Propriedades
Não é possível especificar ou 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 de pacote são validados. A validação ocorre quando você salva o pacote, abre o pacote no Designer SSIS e executa o pacote.
Portanto, você não verá os valores atualizados das propriedades dos objetos de pacote que usam expressões de propriedade no Designer SSIS até salvar o pacote, executá-lo ou reabri-lo depois de adicionar as expressões de propriedade.
As expressões de propriedade associadas a diferentes tipos de objetos - gerenciadores de conexão, provedores de log e enumeradores - também são carregadas quando métodos específicos para esse tipo de objeto são chamados. Por exemplo, as propriedades dos gerenciadores de conexões são carregadas antes que o Integration Services crie uma instância da conexão.
As expressões de propriedade são carregadas após o carregamento das configurações do pacote. Por exemplo, as variáveis são atualizadas primeiro por suas configurações e, em seguida, 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 definidas por configurações.
Observação
Não é possível usar a opção set do utilitário dtexec para preencher uma expressão de propriedade.
A tabela a seguir resume quando as expressões das propriedades do Integration Services são avaliadas e carregadas.
| Tipo de objeto | Carregue e avalie |
|---|---|
| Pacote, loop Foreach, loop For, sequência, tarefas e componentes de fluxo de dados | Depois de carregar configurações Antes da validação Antes da execução |
| Gerenciadores de conexões | Depois de carregar configurações Antes da validação Antes da execução Antes de criar uma instância de conexão |
| Provedores de log | Depois de carregar configurações Antes da validação Antes da execução Antes de abrir os logs |
| Enumeradores Foreach | Depois de carregar 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
Com freqüência, é ú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 Foreach Loop. 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 propriedade com a propriedade ConnectionString dos gerenciadores de conexões 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 executáveis simultaneamente definindo a propriedade MaxConcurrentExecutables para um valor maior que 1 ou para o valor -1. Um valor de -1 permite que o número máximo de executáveis em execução simultânea seja igual ao número de processadores mais dois. Para evitar consequências negativas da execução paralela de executáveis, o valor MaxConcurrentExecutables deve ser definido como 1. Se MaxConcurrentExecutables não estiver 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 arquivo em uma tabela. Se MaxConcurrentExecutables não estiver definido como 1, conflitos de gravação poderão ocorrer se duas instâncias da tarefa Executar SQL tentarem gravar na tabela ao mesmo tempo.
Expressões de propriedade de exemplo
As expressões de exemplo a seguir mostram como usar 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 número inteiro que representa a parte do dia de uma data. Se for dia 1 ou 15, o registo é ativado; caso contrário, o registo é desativado. O valor 1 é o equivalente inteiro do membro do enumerador LoggingMode Enabled, e o valor 2 é o equivalente inteiro do membro Disabled. Você deve usar o valor numérico em vez do nome do membro do enumerador na expressão.
DAY((DT_DBTIMESTAMP)GETDATE())==1||DAY((DT_DBTIMESTAMP)GETDATE())==15?1:2
Expressão de atributo para o assunto de uma mensagem de e-mail
A seguinte expressão de propriedade pode ser usada para definir a propriedade Subject de uma tarefa Send Mail e fornecer um assunto de e-mail útil. A expressão utiliza uma combinação de literais de string, variáveis de sistema, os operadores de concatenação (+) e cast e as funções DATEDIFF e GETDATE. As variáveis do 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 de abril de 2005 e a duração da execução tiver sido de 9 segundos, a expressão será avaliada como a seguinte cadeia de caracteres.
PExpression-->Package: (EmailRowCountPP) Iniciado:3/4/2005 11:06:18 AM Duração: 9 segundos.
Expressão de propriedade para a mensagem de uma mensagem de email
A expressão de propriedade a seguir pode ser usada para definir a propriedade MessageSource de uma tarefa Send Mail. 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 nomeadas nasdaqrawrows, nyserawrowse amexrawrows. A string "\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 é avaliada para a seguinte cadeia de caracteres.
Linhas processadas:
NASDAQ: 7058
NYSE: 3528
AMEX: 1102
Expressão de propriedade para a propriedade executável de uma tarefa de processo de execução
A seguinte expressão de propriedade pode ser usada para definir a Propriedade Executável de uma tarefa de Executar Processo. A expressão usa uma combinação de literais de strings, operadores e funções. A expressão usa as funções DATEPART e GETDATE e o operador condicional.
DATEPART("weekday", GETDATE()) ==2?"notepad.exe":"mspaint.exe"
Se for o segundo dia da semana, a tarefa Executar Processo será executada notepad.exe, caso contrário, a tarefa será executada mspaint.exe.
Expressão de propriedade para a propriedade ConnectionString de um gerenciador de conexões de arquivo 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 uma única 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 gerenciadores de conexões podem ser acessadas somente usando a janela Propriedades. Para exibir as propriedades de um gerenciador de conexões, você deve selecionar o gerenciador de conexões na área Gerenciadores de conexões do Designer SSIS quando a janela Propriedades estiver aberta 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 registo de 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 uma única variável definida pelo usuário, varConfigString, que contém o nome do gerenciador de conexões File a ser usado. O Gerenciador de conexões de arquivo especifica o caminho do arquivo de texto no qual as entradas de log são gravadas.
@[User::varConfigString]
Observação
As expressões de propriedade para provedores de log podem ser acessadas somente usando a janela Propriedades. Para exibir as propriedades de um provedor de log, você deve selecionar o provedor de log na guia Package Explorer do SSIS Designer quando a janela Propriedades estiver aberta ou clicar com o botão direito do mouse no provedor de log no Package Explorer e clicar em Propriedades.
Recursos Externos
- Artigo técnico, Exemplos de expressões SSIS