Configurar o SQL do Azure no Edge
Importante
O SQL do Azure no Edge será desativado em 30 de setembro de 2025. Para obter mais informações e opções de migração, veja o Aviso de aposentadoria.
Observação
O SQL do Azure no Edge encerrou o suporte à plataforma ARM64.
O SQL do Azure no Edge dá suporte para a configuração por meio de uma destas duas opções:
- Variáveis de ambiente
- Um arquivo mssql.conf colocado na pasta /var/opt/mssql
Observação
Definir variáveis de ambiente substitui as configurações especificadas no arquivo mssql.conf
.
Configurar usando variáveis de ambiente
O SQL do Azure no Edge expõe várias variáveis de ambiente diferentes que podem ser usadas para configurar o contêiner do SQL no Edge. Essas variáveis de ambiente são um subconjunto das variáveis de ambiente disponíveis para SQL Server no Linux. Para obter mais informações sobre variáveis de ambiente do SQL Server no Linux, confira Variáveis de ambiente.
As novas variáveis de ambiente a seguir foram adicionadas ao Azure SQL Edge.
Variável de ambiente | Descrição | Valores |
---|---|---|
PlanId | Especifica a SKU do SQL do Azure no Edge a ser usada durante a inicialização. Essa variável de ambiente só é necessária ao implantar o SQL do Azure no Edge usando o Azure IoT Edge. | asde-developer-on-iot-edge ou asde-premium-on-iot-edge |
MSSQL_TELEMETRY_ENABLED | Habilitar ou desabilitar a coleta de dados de diagnóstico e de uso. | TRUE ou FALSE |
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 no contêiner do SQL no Edge. Essa pasta pode ser mapeada para um volume de 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 que contém os pacotes dacpac ou bacpac. Para obter mais informações, consulte Implantar os pacotes DACPAC e BACPAC do Banco de Dados SQL no SQL no Edge. |
As variáveis de ambiente do SQL Server em Linux a seguir não são compatíveis com o SQL do Azure no Edge. Se definida, esta variável de ambiente será ignorada durante a inicialização do contêiner.
Variável de ambiente | Descrição |
---|---|
MSSQL_ENABLE_HADR | Habilite o Grupo de Disponibilidade. Por exemplo, 1 está habilitado e 0 está desabilitado. |
Importante
A variável de ambiente MSSQL_PID do SQL no Edge só aceita Premium e Developer como valores válidos. O SQL do Azure no Edge não é compatível com inicialização usando uma chave do produto.
Definir as variáveis de ambiente
Especifique as variáveis de ambiente para o SQL no Edge ao implantar o serviço por meio do portal do Azure. Você pode adicioná-los na seção de variáveis de ambiente da implantação do módulo ou como parte das Opções de criação do contêiner.
Adicione valores em variáveis de ambiente.
Adicione valores nas Opções de criação de contêiner.
Observação
No modo de implantação desconectado, as variáveis de ambiente podem ser especificadas usando a opção -e
ou --env
ou --env-file
opção do comando docker run
.
Configurar usando um arquivo mssql.conf
O SQL do Azure no Edge não inclui o Utilitário de configuração mssql-conf, como o SQL Server em Linux. Você precisa configurar manualmente o arquivo MSSQL.conf e colocá-lo na unidade de armazenamento persistente que é mapeada para a pasta/var/opt/MSSQL/no módulo SQL no Edge. Ao implantar o SQL no Edge por meio do Hub IoT do Azure, 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 SQL do Azure no Edge.
Opção | Descrição |
---|---|
customerfeedback | Escolha se o SQL Server enviará comentários à Microsoft. Para obter mais informações, consulte desabilitar o uso e 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 do uso e coleta de dados de diagnóstico |
As opções de mssql.conf a seguir não se aplicam ao SQL no Edge:
Opção | Descrição |
---|---|
Comentários do cliente | Escolha se o SQL Server enviará comentários à Microsoft. |
Perfil do Database Mail | Definir o perfil padrão do Database Mail para o SQL Server em Linux. |
Alta disponibilidade | Habilitar grupos de disponibilidade. |
Coordenador de Transações Distribuídas da Microsoft | Configurar e solucionar problemas do MSDTC no Linux. As opções de configuração relacionadas a transações distribuídas adicionais também não são compatíveis com o SQL no Edge. Para obter mais informações sobre essas opções de configuração adicionais, consulte Configurar o MSDTC. |
EULAs para Serviços de Machine Learning | Aceitar os EULAs de R e Python para pacotes de Serviços de Azure Machine Learning. Aplica-se somente ao SQL Server 2019. |
outboundnetworkaccess | Habilitar o acesso à rede para extensões Java, R e Python dos Serviços de Machine Learning. |
O seguinte arquivo de amostra mssql.conf funciona para o SQL no Edge. Para obter mais informações sobre o formato do arquivo mssql.conf
, confira 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 do Azure no Edge como um usuário não raiz
Por padrão, os contêineres do SQL do Azure no Edge são executados com um usuário/grupo não raiz. Quando implantado por meio do Hub IoT do Azure (ou usando docker run
), a menos que um usuário/grupo diferente seja especificado, contêineres do SQL no 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 no Edge está 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 raiz acesse arquivos de banco de dados que estão em volumes montados, verifique se o usuário/grupo no qual você executa o contêiner tem permissões de gravação e leitura no armazenamento de arquivos persistente. No exemplo a seguir, definimos o usuário não raiz com user_id
de 10001
, como o proprietário dos arquivos.
chown -R 10001:0 <database file dir>
Atualizar de versões anteriores do CTP
Os CTPs anteriores do Azure SQL Edge foram configurados para execução como os usuários raiz. As opções a seguir estão disponíveis ao atualizar de CTPs anteriores.
Continuar a usar o usuário raiz – para continuar usando o usuário raiz, adicione o par chave-valor
*"User": "0:0"*
em opções de criação de contêiner.Usar o usuário MSSQL padrão – para usar o usuário MSSQL padrão, siga estas etapas:
Adicione um usuário chamado
mssql
no host do Docker. No exemplo a seguir, adicionamos um usuário MSSQL com a ID 10001. Esse usuário também é adicionado ao grupo raiz.sudo useradd -M -s /bin/bash -u 10001 -g 0 mssql
Alterar a permissão no volume de montagem/diretório no qual reside o arquivo de banco de dados
sudo chgrp -R 0 /var/lib/docker/volumes/kafka_sqldata/ sudo chmod -R g=u /var/lib/docker/volumes/kafka_sqldata/
Usar uma conta diferente de usuário não raiz-para usar uma conta de usuário diferente da raiz
- Atualize as opções de criação do contêiner para adicionar o par chave-valor
*"User": "user_name | user_id*
em opções de criação de 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 volume de montagem/diretório.
- Atualize as opções de criação do contêiner para adicionar o par chave-valor
Manter seus dados
Sua configuração do SQL do Azure no Edge muda e os arquivos de banco de dados são mantidos no contêiner mesmo que você reinicie 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 SQL do Azure no Edge e seus bancos de dados. A seção a seguir explica como usar volumes de dados para persistir seus arquivos de banco de dados mesmo que os contêineres associados sejam excluídos.
Importante
Para o SQL do Azure no Edge é essencial que você compreenda a persistência de dados no Docker. Além da discussão nesta seção, confira a documentação do Docker sobre como gerenciar dados em contêineres do Docker.
Montar um diretório de 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 docker run
com o sinalizador -v <host directory>:/var/opt/mssql
. Isso permite que os dados sejam restaurados entre as execuções do contêiner.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -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=<password>" -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 exiba os arquivos no host fora do Docker.
Importante
Atualmente, o mapeamento de volume do host para o Docker no Windows não dá suporte ao mapeamento do diretório /var/opt/mssql
completo. No entanto, você pode mapear um subdiretório, como /var/opt/mssql/data
para o computador host.
Importante
No momento, não há suporte para o mapeamento de volume do host para o Docker no macOS com a imagem do SQL do Azure no Edge. Use contêineres de volume de dados em vez disso. Essa restrição é específica do diretório /var/opt/mssql
. A leitura de um diretório montado funciona bem. Por exemplo, monte um diretório de host usando -v
no macOS e restaure um backup de um arquivo .bak
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 de host com o parâmetro -v
. O exemplo a seguir cria um volume de dados compartilhado chamado sqlvolume.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -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=<password>" -p 1433:1433 -v sqlvolume:/var/opt/mssql -d mcr.microsoft.com/azure-sql-edge
Observação
Essa técnica para criar implicitamente um volume de dados no comando executar não funciona com versões mais antigas do Docker. Nesse caso, use as etapas explícitas descritas na documentação do Docker, Como criar e montar um contêiner de volume de dados.
Mesmo que você pare e remova esse contêiner, o volume de dados persiste. Você pode exibi-lo com o comando docker volume ls
.
docker volume ls
Se você criar outro contêiner com o mesmo nome de volume, o novo contêiner usará os mesmos dados do SQL do Azure no Edge contidos no volume.
Para remover um contêiner de volume de dados, use o comando docker volume rm
.
Aviso
Se você excluir o contêiner do volume de dados, qualquer dado do SQL do Azure no Edge no contêiner será excluído permanentemente.