Partilhar via


Implementar SQL do Azure Edge com o Docker

Importante

SQL do Azure Edge já não suporta a plataforma ARM64.

Neste início rápido, vai utilizar o Docker para solicitar e executar a imagem de contentor do SQL do Azure Edge. Em seguida, ligue-se ao sqlcmd para criar a sua primeira base de dados e executar consultas.

Esta imagem é composta pelo SQL Edge com base no Ubuntu 18.04. Pode ser utilizado com o Docker Engine 1.8+ no Linux.

SQL do Azure contentores do Edge não são suportados nas seguintes plataformas para cargas de trabalho de produção:

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

Pré-requisitos

  • Docker Engine 1.8+ em qualquer distribuição do Linux suportada. Para obter mais informações, veja Instalar o Docker. Uma vez que as imagens do SQL Edge são baseadas no Ubuntu 18.04, recomendamos que utilize um anfitrião do Docker Ubuntu 18.04.
  • Controlador de armazenamento docker overlay2 . Esta é a predefinição para a maioria dos utilizadores. Se descobrir que não está a utilizar este fornecedor de armazenamento e precisa de alterar, veja as instruções e avisos na documentação do Docker para configurar a sobreposição2.
  • 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 Edge.

Nota

Para os comandos bash neste artigo sudo , é utilizado. Se não quiser utilizar sudo para executar o Docker, pode configurar um grupo do Docker e adicionar utilizadores a esse grupo. Para obter mais informações, veja Passos de pós-instalação para Linux.

Solicitar e executar a imagem de contentor

  1. Extraia a imagem de contentor do SQL do Azure Edge do Microsoft Container Registry.

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

    O comando anterior solicita a imagem de contentor do SQL Edge mais recente. Para ver todas as imagens disponíveis, veja a página do hub do Docker azure-sql-edge.

  2. Para executar a imagem de contentor com o Docker, utilize o seguinte comando a partir de uma shell de bash:

    • Inicie uma instância do SQL do Azure Edge em execução como a edição Programador:

      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 Edge em execução como 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 palavra-passe deve seguir a política de palavra-passe predefinida do Motor de Base de Dados SQL da Microsoft, caso contrário, o contentor não pode configurar o Motor de Base de Dados SQL e deixará de funcionar. Por predefinição, a palavra-passe tem de ter, pelo menos, 8 carateres e conter carateres de três dos quatro conjuntos seguintes: letras maiúsculas, letras minúsculas, 10 dígitos de base e símbolos. Pode examinar o registo de erros ao executar o comando docker logs .

    A tabela seguinte fornece uma descrição dos parâmetros nos exemplos anteriores docker run :

    Parâmetro Description
    -e "ACCEPT_EULA=Y" Defina a variável ACCEPT_EULA para qualquer valor para confirmar a sua aceitação do Contrato de Licenciamento do Utilizador Final. Definição necessária para a imagem do SQL Edge.
    -e "MSSQL_SA_PASSWORD=yourStrong(!) Palavra-passe" Especifique a sua própria palavra-passe segura que tenha pelo menos oito carateres e cumpra os requisitos de palavra-passe do SQL do Azure Edge. Definição necessária para a imagem do SQL Edge.
    -p 1433:1433 Mapeie uma porta TCP no ambiente anfitrião (primeiro valor) com uma porta TCP no contentor (segundo valor). Neste exemplo, o SQL Edge está a escutar no TCP 1433 no contentor e está exposto à porta 1433 no anfitrião.
    --name azuresqledge Especifique um nome personalizado para o contentor em vez de um gerado aleatoriamente. Se executar mais do que um contentor, não poderá reutilizar este mesmo nome.
    -d Executar o contentor em segundo plano (daemon)

    Para obter uma lista completa de todas as variáveis de ambiente do SQL do Azure Edge, veja Configurar SQL do Azure Edge com Variáveis de Ambiente. Também pode utilizar um ficheiro mssql.conf para configurar contentores do SQL Edge.

  3. Para ver os contentores do Docker, utilize o docker ps comando .

    sudo docker ps -a
    
  4. Se a coluna ESTADO mostrar um estado De Cima, o SQL Edge está em execução no contentor e a escutar na porta especificada na coluna PORTAS . Se a coluna ESTADO do contentor do SQL Edge mostrar Exited (Fechado), veja a secção Resolução de problemas da documentação do SQL do Azure Edge.

    O -h parâmetro (nome do anfitrião) também é útil, mas não é utilizado neste tutorial para simplificar. Isto altera o nome interno do contentor para um valor personalizado. Este é o nome que é devolvido na seguinte consulta Transact-SQL:

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

    Definir -h e --name para o mesmo valor é uma boa forma de identificar facilmente o contentor de destino.

  5. Como passo final, altere a palavra-passe sa porque está MSSQL_SA_PASSWORD visível na ps -eax saída e armazenada na variável de ambiente com o mesmo nome. Veja os seguintes passos.

Alterar a palavra-passe SA

A conta SA é um administrador de sistema na instância do SQL do Azure Edge que é criada durante a configuração. Depois de criar o contentor do SQL Edge, a MSSQL_SA_PASSWORD variável de ambiente que especificou é detetável ao ser executada echo $MSSQL_SA_PASSWORD no contentor. Para fins de segurança, altere a palavra-passe sa.

  1. Escolha uma palavra-passe segura para utilizar para o utilizador sa.

  2. Utilize docker exec para executar sqlcmd para alterar a palavra-passe com Transact-SQL. No exemplo seguinte, substitua a palavra-passe antiga, <YourStrong!Passw0rd>, e a nova palavra-passe, <YourNewStrong!Passw0rd>, pelos seus próprios valores de palavra-passe.

    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>"'
    

Ligar ao SQL do Azure Edge

Os passos seguintes utilizam a ferramenta de linha de comandos SQL do Azure Edge, sqlcmd, dentro do contentor para ligar ao SQL Edge.

  1. Utilize o docker exec -it comando para iniciar uma shell de bash interativa dentro do contentor em execução. No exemplo seguinte, azuresqledge é o nome especificado pelo --name parâmetro quando criou o contentor.

    sudo docker exec -it azuresqledge "bash"
    
  2. Uma vez dentro do contentor, ligue-se localmente ao sqlcmd. o sqlcmd não está no caminho por predefinição, pelo que tem de especificar o caminho completo.

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

    Dica

    Pode omitir a palavra-passe na linha de comandos para que lhe seja pedido que a introduza.

  3. Se for bem-sucedido, deverá aceder a uma linha de comandos sqlcmd : 1>.

Criar e consultar dados

As secções seguintes explicam como utilizar sqlcmd e Transact-SQL para criar uma nova base de dados, adicionar dados e executar uma consulta.

Criar uma nova base de dados

Os passos seguintes criam uma nova base de dados com o nome TestDB.

  1. Na linha de comandos sqlcmd , cole o seguinte comando Transact-SQL para criar uma base de dados de teste:

    CREATE DATABASE TestDB;
    GO
    
  2. Na linha seguinte, escreva uma consulta para devolver o nome de todas as bases de dados no servidor:

    SELECT name from sys.databases;
    GO
    

Inserir dados

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

  1. Na linha de comandos sqlcmd , mude o contexto para a nova TestDB base de dados:

    USE TestDB;
    
  2. Crie uma nova tabela com o nome 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. Escreva GO para executar os comandos anteriores:

    GO
    

Selecionar dados

Agora, execute uma consulta para devolver dados da Inventory tabela.

  1. Na linha de comandos sqlcmd , introduza uma consulta que devolva linhas da Inventory tabela onde a quantidade é superior a 152:

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

    GO
    

Sair da linha de comandos sqlcmd

  1. Para terminar a sessão sqlcmd , escreva QUIT:

    QUIT
    
  2. Para sair da linha de comandos interativa no contentor, escreva exit. O contentor continua a ser executado depois de sair da shell de bash interativa.

Ligar a partir de fora do contentor

Também pode ligar à instância do SQL Edge no seu computador Docker a partir de qualquer ferramenta externa do Linux, Windows ou macOS que suporte ligações SQL. Para obter mais informações sobre como ligar a um contentor do SQL Edge de fora, veja Ligar e Consultar SQL do Azure Edge.

Remover o contentor

Se quiser remover o contentor do SQL Edge utilizado neste tutorial, execute os seguintes comandos:

sudo docker stop azuresqledge
sudo docker rm azuresqledge

Aviso

Parar e remover um contentor elimina permanentemente quaisquer dados do SQL Edge no contentor. Se precisar de preservar os seus dados, crie e copie um ficheiro de cópia de segurança do contentor ou utilize uma técnica de persistência de dados de contentor.

Passos seguintes