Tutorial: Sincronizar dados do SQL Edge com o armazenamento de Blob do Azure usando o Azure Data Factory

Importante

O Azure SQL Edge não suporta mais a plataforma ARM64.

Este tutorial mostra como usar o Azure Data Factory para sincronizar dados incrementalmente com o armazenamento de Blob do Azure a partir de uma tabela em uma instância do Azure SQL Edge.

Antes de começar

Se você ainda não criou um banco de dados ou uma tabela em sua implantação do Azure SQL Edge, use um destes métodos para criar um:

  • Use o SQL Server Management Studio ou o Azure Data Studio para se conectar ao SQL Edge. Execute um script SQL para criar o banco de dados e a tabela.

  • Crie um banco de dados e uma tabela usando sqlcmd conectando-se diretamente ao módulo SQL Edge. Para obter mais informações, consulte Conectar-se ao Mecanismo de Banco de Dados usando sqlcmd.

  • Use SQLPackage.exe para implantar um arquivo de pacote de DAC no contêiner SQL Edge. Você pode automatizar esse processo especificando o URI do arquivo SqlPackage como parte da configuração de propriedades desejada do módulo. Você também pode usar diretamente a ferramenta de cliente SqlPackage.exe para implantar um pacote de DAC no SQL Edge.

    Para obter informações sobre como baixar SqlPackage.exe, consulte Baixar e instalar sqlpackage. A seguir estão alguns comandos de exemplo para SqlPackage.exe. Para obter mais informações, consulte a documentação .exe SqlPackage.

    Criar um pacote de DAC

    sqlpackage /Action:Extract /SourceConnectionString:"Data Source=<Server_Name>,<port>;Initial Catalog=<DB_name>;User ID=<user>;Password=<password>" /TargetFile:<dacpac_file_name>
    

    Aplicar um pacote de DAC

    sqlpackage /Action:Publish /Sourcefile:<dacpac_file_name> /TargetServerName:<Server_Name>,<port> /TargetDatabaseName:<DB_Name> /TargetUser:<user> /TargetPassword:<password>
    

Criar uma tabela SQL e um procedimento para armazenar e atualizar os níveis de marca d'água

Uma tabela de marca d'água é usada para armazenar o último carimbo de data/hora até o qual os dados já foram sincronizados com o Armazenamento do Azure. Um procedimento armazenado Transact-SQL (T-SQL) é usado para atualizar a tabela de marca d'água após cada sincronização.

Execute estes comandos na instância do SQL Edge:

CREATE TABLE [dbo].[watermarktable] (
    TableName VARCHAR(255),
    WatermarkValue DATETIME,
);
GO

CREATE PROCEDURE usp_write_watermark @timestamp DATETIME,
    @TableName VARCHAR(50)
AS
BEGIN
    UPDATE [dbo].[watermarktable]
    SET [WatermarkValue] = @timestamp
    WHERE [TableName] = @TableName;
END
GO

Criar um pipeline do Data Factory

Nesta seção, você criará um pipeline do Azure Data Factory para sincronizar dados com o armazenamento de Blob do Azure a partir de uma tabela no Azure SQL Edge.

Criar uma fábrica de dados usando a interface do usuário do Data Factory

Crie uma fábrica de dados seguindo as instruções neste tutorial.

Criar um pipeline do Data Factory

  1. Na página Vamos começar da interface do usuário do Data Factory, selecione Criar pipeline.

    Screenshot of the create a Data Factory pipeline.

  2. Na página Geral da janela Propriedades do pipeline, digite PeriodicSync para o nome.

  3. Adicione a atividade Pesquisa para obter o valor da marca d'água antiga. No painel Atividades, expanda Geral e arraste a atividade Pesquisa para a superfície do designer de pipeline. Altere o nome da atividade para OldWatermark.

    Screenshot of adding the old watermark lookup.

  4. Alterne para a guia Configurações e selecione Novo para Conjunto de Dados de Origem. Agora você criará um conjunto de dados para representar dados na tabela de marca d'água. Esta tabela contém o limite de tamanho antigo que foi utilizado na operação de cópia anterior.

  5. Na janela Novo Conjunto de Dados, selecione Azure SQL Server e, em seguida, selecione Continuar.

  6. Na janela Definir propriedades do conjunto de dados, em Nome, insira WatermarkDataset.

  7. Para Serviço Vinculado, selecione Novo e conclua estas etapas:

    1. Em Nome, insira SQLDBEdgeLinkedService.

    2. Em Nome do servidor, insira os detalhes do servidor do SQL Edge.

    3. Selecione o nome do banco de dados na lista.

    4. Introduza o seu Nome de Utilizador e Palavra-passe.

    5. Para testar a conexão com a instância do SQL Edge, selecione Testar conexão.

    6. Selecione Criar.

      Screenshot of creating a linked service.

    7. Selecione OK.

  8. Na guia Configurações, selecione Editar.

  9. Na guia Conexão, selecione [dbo].[watermarktable]Tabela. Se quiser visualizar dados na tabela, selecione Visualizar dados.

  10. Alterne para o editor de pipeline selecionando a guia pipeline na parte superior ou selecionando o nome do pipeline na visualização em árvore à esquerda. Na janela de propriedades da atividade Pesquisa, confirme se WatermarkDataset está selecionado na lista Conjunto de dados de origem.

  11. No painel Atividades, expanda Geral e arraste outra atividade Pesquisa para a superfície do designer de pipeline. Defina o nome como NewWatermark na guia Geral da janela de propriedades. Esta atividade Pesquisa obtém o novo valor de marca d'água da tabela que contém os dados de origem para que possam ser copiados para o destino.

  12. Na janela de propriedades da segunda atividade de pesquisa, alterne para a guia Configurações e selecione Novo para criar um conjunto de dados para apontar para a tabela de origem que contém o novo valor da marca d'água.

  13. Na janela Novo Conjunto de Dados, selecione Instância do SQL Edge e, em seguida, selecione Continuar.

    1. Na janela Definir propriedades, em Nome, insira SourceDataset. Em Serviço vinculado, selecione SQLDBEdgeLinkedService.

    2. Em Tabela, selecione a tabela que pretende sincronizar. Você também pode especificar uma consulta para esse conjunto de dados, conforme descrito posteriormente neste tutorial. A consulta tem precedência sobre a tabela especificada nesta etapa.

    3. Selecione OK.

  14. Alterne para o editor de pipeline selecionando a guia pipeline na parte superior ou selecionando o nome do pipeline na visualização em árvore à esquerda. Na janela de propriedades da atividade Pesquisa, confirme se SourceDataset está selecionado na lista Conjunto de dados de origem.

  15. Selecione Consulta em Usar consulta. Atualize o nome da tabela na consulta a seguir e insira a consulta. Você está selecionando apenas o valor máximo de timestamp na tabela. Certifique-se de selecionar Somente a primeira linha.

    SELECT MAX(timestamp) AS NewWatermarkValue
    FROM [TableName];
    

    Screenshot of a select query.

  16. No painel Atividades, expanda Mover & Transformar e arraste a atividade Copiar do painel Atividades para a superfície do designer. Defina o nome da atividade como IncrementalCopy.

  17. Ligue ambas as atividades Lookup à atividade Copy ao arrastar o botão verde associado às atividades Lookup para a atividade Copy. Solte o botão do mouse quando vir a cor da borda da atividade Copiar mudar para azul.

  18. Selecione a atividade Copiar e confirme que vê as propriedades da atividade na janela Propriedades .

  19. Alterne para a guia Origem na janela Propriedades e conclua estas etapas:

    1. Na caixa Conjunto de dados de origem, selecione SourceDataset.

    2. Em Usar consulta, selecione Consulta.

    3. Insira a consulta SQL na caixa Consulta . Aqui está um exemplo de consulta:

    SELECT *
    FROM TemperatureSensor
    WHERE timestamp > '@{activity(' OldWaterMark ').output.firstRow.WatermarkValue}'
        AND timestamp <= '@{activity(' NewWaterMark ').output.firstRow.NewWatermarkvalue}';
    
  20. Na guia Coletor, selecione Novo em Conjunto de dados do coletor.

  21. Neste tutorial, o repositório de dados do coletor é um armazenamento de dados de armazenamento de Blob do Azure. Selecione Armazenamento de Blob do Azure e, em seguida, selecione Continuar na janela Novo Conjunto de Dados.

  22. Na janela Selecionar Formato, selecione o formato dos seus dados e, em seguida, selecione Continuar.

  23. Na janela Definir Propriedades, em Nome, insira SinkDataset. Em Serviço vinculado, selecione Novo. Agora você criará uma conexão (um serviço vinculado) ao seu armazenamento de Blob do Azure.

  24. Na janela Novo Serviço Vinculado (armazenamento de Blob do Azure), conclua estas etapas:

    1. Na caixa Nome, digite AzureStorageLinkedService.

    2. Em Nome da conta de armazenamento, selecione a conta de armazenamento do Azure para sua assinatura do Azure.

    3. Teste a conexão e selecione Concluir.

  25. Na janela Definir Propriedades, confirme se AzureStorageLinkedService está selecionado em Serviço vinculado. Selecione Criar e OK.

  26. Na guia Coletor , selecione Editar.

  27. Vá para a guia Conexão de SinkDataset e conclua estas etapas:

    1. Em Caminho do arquivo, digite asdedatasync/incrementalcopy, onde asdedatasync é o nome do contêiner de blob e incrementalcopy é o nome da pasta. Crie o contêiner, se ele não existir, ou use o nome de um existente. O Azure Data Factory cria automaticamente a pasta incrementalcopy de saída se ela não existir. Também pode utilizar o botão Procurar do Caminho do ficheiro para navegar para uma pasta num contentor de blobs.

    2. Para a parte Arquivo do caminho do arquivo, selecione Adicionar conteúdo dinâmico [Alt+P] e digite @CONCAT('Incremental-', pipeline().RunId, '.txt') na janela que se abre. Selecione Concluir. O nome do arquivo é gerado dinamicamente pela expressão. Cada execução de pipeline tem um ID exclusivo. A atividade Copy utiliza o ID de execução para gerar o nome do ficheiro.

  28. Alterne para o editor de pipeline selecionando a guia pipeline na parte superior ou selecionando o nome do pipeline na visualização em árvore à esquerda.

  29. No painel Atividades, expanda Geral e arraste a atividade Procedimento Armazenado do painel Atividades para a superfície do designer de pipeline. Conecte a saída verde (êxito) da atividade Copiar à atividade Procedimento armazenado.

  30. Selecione Atividade de procedimento armazenado no designer de pipeline e altere seu nome para SPtoUpdateWatermarkActivity.

  31. Alterne para a guia Conta SQL e selecione *QLDBEdgeLinkedService em Serviço vinculado.

  32. Alterne para a guia Procedimento armazenado e conclua estas etapas:

    1. Em Nome do procedimento armazenado, selecione [dbo].[usp_write_watermark].

    2. Para especificar valores para os parâmetros do procedimento armazenado, selecione Importar parâmetro e insira estes valores para os parâmetros:

    Nome Tipo valor
    LastModifiedTime DateTime @{activity('NewWaterMark').output.firstRow.NewWatermarkvalue}
    TableName String @{activity('OldWaterMark').output.firstRow.TableName}
  33. Para validar as configurações do pipeline, selecione Validar na barra de ferramentas. Confirme que não há erros de validação. Para fechar a janela Relatório de Validação de Pipeline, selecione >>.

  34. Publique as entidades (serviços vinculados, conjuntos de dados e pipelines) no serviço Azure Data Factory selecionando o botão Publicar tudo . Aguarde até ver uma mensagem confirmando que a operação de publicação foi bem-sucedida.

Acionar um pipeline com base em um cronograma

  1. Na barra de ferramentas do pipeline, selecione Adicionar gatilho, selecione Novo/Editar e, em seguida, selecione Novo.

  2. Nomeie seu gatilho como HourlySync. Em Tipo, selecione Agendar. Defina a Recorrência a cada 1 hora.

  3. Selecione OK.

  4. Selecione Publicar Tudo.

  5. Selecione Acionar agora.

  6. Mude para o separador Monitorizar, no lado esquerdo. Pode ver o estado da execução do pipeline acionada pelo acionador manual. Selecione Atualizar para atualizar a lista.

Próximos passos

  • O pipeline do Azure Data Factory neste tutorial copia dados de uma tabela em uma instância do SQL Edge para um local no armazenamento de Blob do Azure uma vez a cada hora. Para saber mais sobre como usar o Data Factory em outros cenários, consulte estes tutoriais.