Implantar o SQL do Azure no Edge usando o Docker

Importante

O SQL do Azure no Edge encerrou o suporte à plataforma ARM64.

Neste guia de início rápido, você usará o Docker para efetuar pull e executar a imagem de contêiner do SQL do Azure no Edge. Em seguida, você se conectará à ferramenta sqlcmd para criar seu primeiro banco de dados e executar consultas.

Essa imagem representa o SQL no Edge com base no Ubuntu 18.04. Ela pode ser usada com o Docker Engine 1.8 ou superior no Linux.

Não há suporte para contêineres do SQL do Azure no Edge nas seguintes plataformas para cargas de trabalho de produção:

  • Windows
  • macOS
  • Azure IoT EFLOW (Edge para Linux no Windows)

Pré-requisitos

  • O Docker Engine 1.8 ou superior em qualquer distribuição do Linux com suporte. Para obter mais informações, veja Install Docker (Instalar o Docker). Como as imagens do SQL no Edge se baseiam no Ubuntu 18.04, é recomendável usar um host do Docker do Ubuntu 18.04.
  • Driver de armazenamento overlay2 do Docker. Esse é o padrão para a maioria dos usuários. Se você perceber que não está usando esse provedor de armazenamento e precisar alterá-lo, confira as instruções e os avisos na documentação do Docker para configurar o overlay2.
  • Mínimo de 10 GB de espaço em disco.
  • Mínimo de 1 GB de RAM.
  • Requisitos de hardware para o SQL do Azure no Edge.

Observação

Para os comandos de bash neste artigo, o sudo é usado. Se você não quiser usar sudo para executar o Docker, configure um grupo do Docker e adicione usuários a ele. Para obter mais informações, veja Etapas de pós-instalação para o Linux.

Efetuar pull e executar a imagem de contêiner

  1. Efetue pull da imagem de contêiner do SQL do Azure no Edge no Registro de Contêiner da Microsoft.

    sudo docker pull mcr.microsoft.com/azure-sql-edge:latest
    

    O comando anterior efetua pull da imagem de contêiner mais recente do SQL no Edge. Para ver todas as imagens disponíveis, confira a página do Docker Hub azure-sql-egde.

  2. Para executar a imagem de contêiner com o Docker, use o seguinte comando em um shell do Bash:

    • Inicie uma instância do SQL do Azure no Edge em execução com a edição Developer:

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      
    • Inicie uma instância do SQL do Azure no Edge em execução com a edição Premium:

      sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=yourStrong(!)Password' -e 'MSSQL_PID=Premium' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
      

    Importante

    A senha deverá seguir a política de senha padrão do Mecanismo de Banco de Dados SQL da Microsoft, caso contrário, o contêiner não poderá configurar o Mecanismo de Banco de Dados SQL e deixará de funcionar. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. É possível examinar o log de erros executando o comando docker logs.

    A seguinte tabela fornece uma descrição dos parâmetros no exemplo de docker run anterior:

    Parâmetro Descrição
    -e "ACCEPT_EULA=Y" Defina a variável ACCEPT_EULA com qualquer valor para confirmar sua aceitação dos Termos de Licença. Configuração necessária para a imagem do SQL no Edge.
    -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" Especifique a sua senha forte que tenha pelo menos oito caracteres e atenda aos Requisitos de senha do SQL do Azure no Edge. Configuração necessária para a imagem do SQL no Edge.
    -p 1433:1433 Mapeie uma porta TCP no ambiente do host (primeiro valor) para uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL no Edge está escutando em TCP 1433 no contêiner, o que é exposto para a porta 1433 no host.
    --name azuresqledge Especifique um nome personalizado para o contêiner em vez de um nome gerado aleatoriamente. Se você executar mais de um contêiner, não será possível reutilizar esse mesmo nome.
    -d Executar o contêiner em segundo plano (daemon)

    Para obter uma lista completa de todas as variáveis de ambiente do SQL do Azure no Edge, confira Configurar o SQL do Azure no Edge com variáveis de ambiente. Você também pode usar um arquivo mssql.conf para configurar os contêineres do SQL no Edge.

  3. Para exibir seus contêineres do Docker, use o comando docker ps.

    sudo docker ps -a
    
  4. Se a coluna STATUS mostrar o status Ativo, o SQL no Edge estará em execução no contêiner e ouvindo na porta especificada na coluna PORTAS. Se a coluna STATUS do contêiner do SQL no Edge mostrar Encerrado, confira a seção Solução de problemas da documentação do SQL do Azure no Edge.

    O parâmetro -h (nome do host) também é útil, mas para simplificar, ele não é usado neste tutorial. Ele altera o nome interno do contêiner para um valor personalizado. Este é o nome que será retornado na consulta Transact-SQL a seguir:

    SELECT @@SERVERNAME,
        SERVERPROPERTY('ComputerNamePhysicalNetBIOS'),
        SERVERPROPERTY('MachineName'),
        SERVERPROPERTY('ServerName');
    

    Configurar -h e --name com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.

  5. Como etapa final, altere sua senha SA porque MSSQL_SA_PASSWORD está visível na saída ps -eax e armazenada na variável de ambiente de mesmo nome. Confira as etapas a seguir.

Alterar a senha SA

A conta SA é um administrador do sistema na instância do SQL do Azure no Edge que é criada durante a configuração. Depois de criar o contêiner do SQL no Edge, a variável de ambiente MSSQL_SA_PASSWORD especificada é detectável executando echo $MSSQL_SA_PASSWORD no contêiner. Para fins de segurança, altere sua senha SA.

  1. Escolha uma senha forte para usar no usuário de SA.

  2. Use docker exec para executar sqlcmd para alterar a senha usando o Transact-SQL. No exemplo a seguir, substitua a senha antiga, <YourStrong!Passw0rd>e a nova senha, <YourNewStrong!Passw0rd>, por suas próprias senhas.

    sudo docker exec -it azuresqledge /opt/mssql-tools/bin/sqlcmd \
       -S localhost -U SA -P "<YourStrong@Passw0rd>" \
       -Q 'ALTER LOGIN SA WITH PASSWORD="<YourNewStrong@Passw0rd>"'
    

Conectar-se ao SQL do Azure no Edge

As etapas a seguir usam a ferramenta de linha de comando do SQL do Azure no Edge, sqlcmd, dentro do contêiner para se conectar ao SQL no Edge.

  1. Use o comando docker exec -it para iniciar um shell bash interativo dentro do contêiner em execução. No exemplo a seguir, azuresqledge é o nome especificado pelo parâmetro --name na criação do contêiner.

    sudo docker exec -it azuresqledge "bash"
    
  2. Quando estiver dentro do contêiner, conecte-se localmente com a sqlcmd. A sqlcmd não está no caminho por padrão, portanto, será necessário especificar o caminho completo.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
    

    Dica

    É possível omitir a senha na linha de comando para receber uma solicitação para inseri-la.

  3. Se isso funcionar, você será levado a um prompt de comando sqlcmd: 1>.

Criar e consultar dados

As seções a seguir descrevem como usar o sqlcmd e o Transact-SQL para criar um banco de dados, adicionar dados e executar uma consulta.

Criar um novo banco de dados

As etapas a seguir criam um novo banco de dados denominado TestDB.

  1. No prompt de comando sqlcmd, cole o seguinte comando Transact-SQL para criar um banco de dados de teste:

    CREATE DATABASE TestDB;
    GO
    
  2. Na próxima linha, grave uma consulta para retornar o nome de todos os bancos de dados do servidor:

    SELECT name from sys.databases;
    GO
    

Inserir dados

Em seguida, crie uma nova tabela, Inventory, e insira duas novas linhas.

  1. No prompt de comando sqlcmd, altere o contexto para o novo banco de dados TestDB:

    USE TestDB;
    
  2. Criar nova tabela denominada Inventory:

    CREATE TABLE Inventory (
        id INT,
        name NVARCHAR(50),
        quantity INT
    );
    
  3. Inserir dados na nova tabela:

    INSERT INTO Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO Inventory
    VALUES (2, 'orange', 154);
    
  4. Digite GO para executar os comandos anteriores:

    GO
    

Selecionar dados

Agora, execute uma consulta para retornar da tabela Inventory.

  1. No prompt de comando sqlcmd, digite uma consulta que retorna linhas de tabela Inventory em que a quantidade é maior que 152:

    SELECT * FROM Inventory WHERE quantity > 152;
    
  2. Execute o comando:

    GO
    

Saia do prompt de comando sqlcmd

  1. Para encerrar a sessão sqlcmd, digite QUIT:

    QUIT
    
  2. Para sair do prompt de comando interativo no contêiner, digite exit. O contêiner continuará a ser executado depois que você sair do shell bash interativo.

Conectar-se de fora do contêiner

Você também pode se conectar à instância do SQL no Edge no computador do Docker usando qualquer ferramenta externa do macOS, do Windows ou do Linux que seja compatível com conexões SQL. Para obter mais informações sobre como se conectar a um contêiner do SQL no Edge externamente, confira Conectar e consultar o SQL do Azure no Edge.

Remover o contêiner

Se você quiser remover o contêiner do SQL no Edge usado neste tutorial, execute os seguintes comandos:

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Aviso

A interrupção e a remoção permanente de um contêiner excluem todos os dados do SQL no Edge do contêiner. Se você precisar preservar os dados, crie e copie um arquivo de backup fora do contêiner ou use uma técnica de persistência de dados do contêiner.

Próximas etapas