Configurar o Azure SQL Edge
Importante
O Azure SQL Edge será desativado em 30 de setembro de 2025. Para obter mais informações e opções de migração, consulte o Aviso de aposentadoria.
Nota
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 mssql.conf
arquivo.
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.
Adicione valores em Opções de criação de contêiner.
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-file
docker 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 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 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 Hub IoT do Azure (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
*"User": "user_name | user_id*
de chave-valor 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 diretório / volume de montagem.
- Atualize as opções de criação de contêiner para especificar o par de adição
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 docker run
comando com o -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=<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 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=<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
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 .