Especificar um intervalo de dados de alteração

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

No fluxo de controlo de um pacote de Serviços de Integração que realiza uma carga incremental de dados de alteração, a primeira tarefa é calcular os pontos finais do intervalo de alteração. Estes pontos finais são valores de data e hora e serão armazenados em variáveis do pacote para utilização posterior no pacote.

Note

Para uma descrição do processo global de conceção do fluxo de controlo, veja Captura de Alterações de Dados (SSIS).

Configurar variáveis de pacote para os endpoints

Antes de configurar a tarefa Executar SQL para calcular os endpoints, as variáveis do pacote que irão armazenar os endpoints têm de ser definidas.

Para configurar variáveis de pacote

  1. No SQL Server Data Tools (SSDT), abra um novo projeto de Serviços de Integração.

  2. Na janela Variáveis , crie as seguintes variáveis:

    1. Crie uma variável com o tipo de data data-hora para manter o ponto de partida do intervalo.

      Este exemplo utiliza o nome da variável, ExtractStartTime.

    2. Crie outra variável com o tipo de dados datetime para armazenar o ponto final do intervalo.

      Este exemplo utiliza o nome da variável, ExtractEndTime.

Se calcular os pontos finais num pacote principal que executa vários pacotes subordinados, pode utilizar configurações de Variável do Pacote Principal para transmitir os valores dessas variáveis para cada pacote subordinado. Para mais informações, consulte Executar Tarefa de Pacote e Usar os Valores de Variáveis e Parâmetros num Pacote Filho.

Calcular um ponto de partida e um ponto final para dados de alteração

Depois de configurares as variáveis de pacote para os endpoints de intervalo, podes calcular os valores reais desses endpoints e mapear esses valores para as variáveis de pacote correspondentes. Uma vez que esses extremos são valores de data e hora, terá de usar funções que possam calcular ou operar com valores de data e hora. Tanto a linguagem de expressão Integration Services como Transact-SQL têm funções que funcionam com valores de data-hora :

Funções na linguagem de expressões do Integration Services que funcionam com valores de data e hora

Funções em Transact-SQL que funcionam com valores datetime
Tipos de Dados e Funções de Data e Hora (Transact-SQL).

Antes de usar qualquer uma destas funções de data-hora para calcular os pontos finais, tem de determinar se o intervalo é fixo e ocorre num calendário regular. Normalmente, deve-se aplicar alterações que ocorreram nas tabelas de origem às tabelas de destino num calendário regular. Por exemplo, pode querer aplicar essas alterações de hora a hora, diária ou semanalmente.

Depois de perceber se o seu intervalo de mudança é fixo ou mais aleatório, pode calcular os pontos finais:

  • Calcular a data e hora de início. Usa a data e hora de término da carga anterior como a data e hora de início atual. Se usar um intervalo fixo para cargas incrementais, pode calcular este valor usando as funções data-hora do Transact-SQL ou da linguagem de expressão Integration Services. Caso contrário, poderá ter de guardar os pontos finais entre execuções e utilizar uma tarefa "Executar SQL" ou uma tarefa "Script" para carregar o ponto final anterior.

  • Calcular a data e hora de término. Se usar um intervalo fixo para cargas incrementais, calcule a data e hora de término atuais como um deslocamento em relação à data e hora de início. Mais uma vez, pode calcular este valor usando as funções de data-hora do Transact-SQL ou da linguagem de expressão Integration Services.

No procedimento seguinte, o intervalo de alteração utiliza um intervalo fixo e assume que o pacote de carga incremental é executado diariamente sem exceção. Caso contrário, os dados relativos às alterações dos intervalos em falta perder-se-iam. O ponto de partida do intervalo é a meia-noite anteontem, ou seja, entre 24 e 48 horas atrás. O ponto final do intervalo é a meia-noite de ontem, ou seja, a noite anterior, entre 0 e 24 horas atrás.

Para calcular o ponto de partida e o ponto final para o intervalo de captura

  1. No separador Control Flow do SSIS Designer, adicione uma Executar Tarefa SQL ao pacote.

  2. Abra o Editor da Tarefa Executar SQL e, na página Geral do editor, selecione as seguintes opções:

    1. Para ResultSet, selecione Uma única linha.

    2. Configure uma ligação válida à base de dados de origem.

    3. Para SQLSourceType, selecione Entrada Direta.

    4. Para SQLStatement, insira a seguinte instrução SQL:

      SELECT DATEADD(dd,0, DATEDIFF(dd,0,GETDATE()-1)) AS ExtractStartTime,  
        DATEADD(dd,0, DATEDIFF(dd,0,GETDATE())) AS ExtractEndTime  
      
      
  3. Na página Conjunto de Resultados do Editor da Tarefa Executar SQL, associe o resultado ExtractStartTime à variável de pacote ExtractStartTime e associe o resultado ExtractEndTime à variável de pacote ExtractEndTime.

    Note

    Quando usa uma expressão para definir o valor de uma variável de Serviços de Integração, a expressão é avaliada sempre que o valor da variável é acedido.

Passo seguinte