Configurar o Azure SQL Edge

Importante

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

O Azure SQL Edge dá suporte à configuração por meio de uma das duas opções a seguir:

  • Variáveis de ambiente
  • Um arquivo mssql.conf colocado na pasta /var/opt/mssql

Nota

A configuração de variáveis de ambiente substitui as configurações especificadas no arquivo mssql.conf.

Configurar usando variáveis de ambiente

O Azure SQL Edge expõe várias variáveis de ambiente diferentes que podem ser usadas para configurar o contêiner do SQL Edge. Essas variáveis de ambiente são um subconjunto das disponíveis para o SQL Server no Linux. Para obter mais informações sobre o SQL Server em variáveis de ambiente Linux, consulte Variáveis de ambiente.

As novas variáveis de ambiente a seguir foram adicionadas ao Azure SQL Edge.

Variável de ambiente Description Valores
PlanId Especifica a SKU do Azure SQL Edge a ser usada durante a inicialização. Essa variável de ambiente só é necessária ao implantar o Azure SQL Edge usando o Azure IoT Edge. asde-developer-on-iot-edge ou asde-premium-on-iot-edge
MSSQL_TELEMETRY_ENABLED Habilite ou desabilite o uso e a coleta de dados de diagnóstico. VERDADEIRO ou FALSO
MSSQL_TELEMETRY_DIR Define o diretório de destino para os arquivos de auditoria de coleta de dados de uso e diagnóstico. Local da pasta dentro do contêiner SQL Edge. Esta pasta pode ser mapeada para um volume host usando pontos de montagem ou volumes de dados.
MSSQL_PACKAGE Especifica o local do pacote dacpac ou bacpac a ser implantado. Pasta, arquivo ou URL SAS contendo os pacotes dacpac ou bacpac. Para obter mais informações, consulte Implantar pacotes DACPAC e BACPAC do Banco de Dados SQL no SQL Edge.

A seguinte variável de ambiente do SQL Server no Linux não tem suporte para o Azure SQL Edge. Se definida, essa variável de ambiente é ignorada durante a inicialização do contêiner.

Variável de ambiente Description
MSSQL_ENABLE_HADR Habilite o grupo de disponibilidade. Por exemplo, 1 está habilitado e 0 desativado.

Importante

A variável de ambiente MSSQL_PID para SQL Edge só aceita Premium e Developer como os valores válidos. O Azure SQL Edge não oferece suporte à inicialização usando uma chave do produto.

Especificar as variáveis de ambiente

Especifique variáveis de ambiente para o SQL Edge ao implantar o serviço por meio do portal do Azure. Você pode adicioná-los na seção Variáveis de Ambiente da implantação do módulo ou como parte das Opções de Criação de Contêiner.

Adicione valores em Variáveis de Ambiente.

Screenshot of set by using environment variables list.

Adicione valores em Opções de criação de contêiner.

Screenshot of set by using container create options.

Nota

No modo de implantação desconectado, as variáveis de ambiente podem ser especificadas usando a -e opção ou --env ou o --env-filedocker run comando .

Configurar usando um mssql.conf arquivo

O Azure SQL Edge não inclui o utilitário de configuração mssql-conf como o SQL Server no Linux. Você precisa configurar manualmente o arquivo mssql.conf e colocá-lo na unidade de armazenamento persistente mapeada para a pasta /var/opt/mssql/ no módulo SQL Edge. Quando você está implantando o SQL Edge do Azure Marketplace, esse mapeamento é especificado como a opção Montagens nas Opções de Criação de Contêiner.

{
  "Mounts": [
    {
      "Type": "volume",
      "Source": "sqlvolume",
      "Target": "/var/opt/mssql"
    }
  ]
}

As novas opções mssql.conf a seguir foram adicionadas para o Azure SQL Edge.

Opção Description
feedback do cliente Escolha se o SQL Server envia comentários para a Microsoft. Para obter mais informações, consulte Desabilitar o uso e a coleta de dados de diagnóstico
UserRequestedLocalAuditDirectory: Define o diretório de destino para os arquivos de auditoria de coleta de dados de uso e diagnóstico. Para obter mais informações, consulte Auditoria local de uso e coleta de dados de diagnóstico

As seguintes opções mssql.conf não são aplicáveis ao SQL Edge:

Opção Description
Feedback do cliente Escolha se o SQL Server envia comentários para a Microsoft.
Perfil de email do banco de dados Defina o perfil de email do banco de dados padrão para o SQL Server no Linux.
Elevada disponibilidade Habilite os Grupos de Disponibilidade.
Coordenador de Transações Distribuídas da Microsoft Configure e solucione problemas do MSDTC no Linux. Não há suporte para opções de configuração adicionais relacionadas a transações distribuídas para o SQL Edge. Para obter mais informações sobre essas opções de configuração adicionais, consulte Configurar MSDTC.
EULAs de serviços de ML Aceite EULAs R e Python para pacotes do Azure Machine Learning. Aplica-se apenas ao SQL Server 2019.
Acesso à rede de saída Habilite o acesso à rede de saída para as extensões R, Python e Java dos Serviços de Aprendizado de Máquina.

O arquivo mssql.conf de exemplo a seguir funciona para SQL Edge. Para obter mais informações sobre o formato de um mssql.conf arquivo, consulte o formato mssql.conf.

[EULA]
accepteula = Y

[coredump]
captureminiandfull = true
coredumptype = full

[filelocation]
defaultbackupdir = /var/opt/mssql/backup/
defaultdatadir = /var/opt/mssql/data/
defaultdumpdir = /var/opt/mssql/data/
defaultlogdir = /var/opt/mssql/log/

[language]
lcid = 1033

[memory]
memorylimitmb = 6144

[sqlagent]
errorlogfile = /var/opt/mssql/log/sqlagentlog.log
errorlogginglevel = 7

[traceflag]
traceflag0 = 3604
traceflag1 = 3605
traceflag2 = 1204

Executar o SQL Edge do Azure como usuário não raiz

Por padrão, os contêineres do Azure SQL Edge são executados com um usuário/grupo não raiz. Quando implantados por meio do Azure Marketplace (ou usando docker run), a menos que um usuário/grupo diferente seja especificado, os contêineres do SQL Edge são iniciados como o usuário mssql (não raiz). Para especificar um usuário não raiz diferente durante a implantação, adicione o *"User": "<name|uid>[:<group|gid>]"* par chave-valor em opções de criação de contêiner. No exemplo a seguir, o SQL Edge é configurado para iniciar como o usuário *IoTAdmin*.

{
    ..
    ..
    ..
    "User": "IoTAdmin",
    "Env": [
        "MSSQL_AGENT_ENABLED=TRUE",
        "ClientTransportType=AMQP_TCP_Only",
        "MSSQL_PID=Premium"
    ]
}

Para permitir que o usuário não-root acesse arquivos de banco de dados que estão em volumes montados, verifique se o usuário/grupo em que você executa o contêiner tem permissões de leitura e gravação no armazenamento de arquivos persistente. No exemplo a seguir, definimos o usuário não-root com user_id of 10001 como o proprietário dos arquivos.

chown -R 10001:0 <database file dir>

Atualização de versões anteriores do CTP

CTPs anteriores do Azure SQL Edge foram configurados para serem executados como os usuários raiz. As opções a seguir estão disponíveis ao atualizar de CTPs anteriores.

  • Continue a usar o usuário root - Para continuar usando o usuário root, adicione o *"User": "0:0"* par chave-valor em opções de criação de contêiner.

  • Use o usuário mssql padrão - Para usar o usuário mssql padrão, execute estas etapas:

    • Adicione um usuário nomeado mssql no host do Docker. No exemplo abaixo, adicionamos um usuário mssql com ID 10001. Este usuário também é adicionado ao grupo raiz.

      sudo useradd -M -s /bin/bash -u 10001 -g 0 mssql
      
    • Alterar a permissão no diretório / volume de montagem onde o arquivo de banco de dados reside

      sudo chgrp -R 0 /var/lib/docker/volumes/kafka_sqldata/
      sudo chmod -R g=u /var/lib/docker/volumes/kafka_sqldata/
      
  • Usar uma conta de usuário não-root diferente - Para usar uma conta de usuário não-root diferente

    • Atualize as opções de criação de contêiner para especificar o par de adição de chave-valor em opções de criação de *"User": "user_name | user_id* contêiner. Substitua user_name ou user_id por um user_name ou user_id real do host do Docker.
    • Altere as permissões no diretório / volume de montagem.

Persista os seus dados

As alterações de configuração do Azure SQL Edge e os arquivos de banco de dados persistem no contêiner mesmo se você reiniciar o contêiner com docker stop e docker start. No entanto, se você remover o contêiner com docker rm, tudo no contêiner será excluído, incluindo o Azure SQL Edge e seus bancos de dados. A seção a seguir explica como usar volumes de dados para manter seus arquivos de banco de dados, mesmo que os contêineres associados sejam excluídos.

Importante

Para o SQL Edge do Azure, é fundamental que você entenda a persistência de dados no Docker. Além da discussão nesta seção, consulte a documentação do Docker sobre como gerenciar dados em contêineres do Docker.

Montar um diretório host como volume de dados

A primeira opção é montar um diretório em seu host como um volume de dados em seu contêiner. Para fazer isso, use o comando com o docker run-v <host directory>:/var/opt/mssql sinalizador. Isso permite que os dados sejam restaurados entre as execuções de contêiner.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/azure-sql-edge
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 -v <host directory>/data:/var/opt/mssql/data -v <host directory>/log:/var/opt/mssql/log -v <host directory>/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/azure-sql-edge

Essa técnica também permite que você compartilhe e visualize os arquivos no host fora do Docker.

Importante

Atualmente, o mapeamento de volume do host para Docker no Windows não oferece suporte ao mapeamento do diretório completo /var/opt/mssql . No entanto, você pode mapear um subdiretório, como /var/opt/mssql/data para sua máquina host.

Importante

No momento, não há suporte para o mapeamento de volume do host para Docker no macOS com a imagem do Azure SQL Edge. Em vez disso, use contêineres de volume de dados. Esta restrição é específica para o /var/opt/mssql diretório. A leitura a partir de um diretório montado funciona bem. Por exemplo, você pode montar um diretório de host usando -v no macOS e restaurar um backup de um .bak arquivo que reside no host.

Usar contêineres de volume de dados

A segunda opção é usar um contêiner de volume de dados. Você pode criar um contêiner de volume de dados especificando um nome de volume em vez de um diretório host com o -v parâmetro. O exemplo a seguir cria um volume de dados compartilhado chamado sqlvolume.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge

Nota

Essa técnica para criar implicitamente um volume de dados no comando run não funciona com versões mais antigas do Docker. Nesse caso, use as etapas explícitas descritas na documentação do Docker, Criando e montando um contêiner de volume de dados.

Mesmo se você parar e remover esse contêiner, o volume de dados persiste. Você pode visualizá-lo com o docker volume ls comando.

docker volume ls

Se, em seguida, você criar outro contêiner com o mesmo nome de volume, o novo contêiner usará os mesmos dados do Azure SQL Edge contidos no volume.

Para remover um contêiner de volume de dados, use o docker volume rm comando.

Aviso

Se você excluir o contêiner de volume de dados, todos os dados do Azure SQL Edge no contêiner serão excluídos permanentemente .

Próximos passos