Solucionar problemas de implantações do 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.
Este artigo fornece informações sobre possíveis erros observados ao implantar e usar contêineres do SQL Edge do Azure e fornece técnicas de solução de problemas para ajudar a resolver esses problemas.
O Azure SQL Edge dá suporte a dois modelos de implantação:
Implantação conectada por meio do Azure IoT Edge: o Azure SQL Edge pode ser implantado como um módulo para o Azure IoT Edge. Para obter mais informações, consulte Implantar o Azure SQL Edge.
Implantação desconectada: as imagens de contêiner do SQL Edge do Azure podem ser extraídas do hub do Docker e implantadas como um contêiner autônomo ou em um cluster do Kubernetes. Para obter mais informações, consulte Implantar o Azure SQL Edge com o Docker e Implantar um contêiner do Azure SQL Edge no Kubernetes.
Solucionar problemas de dispositivo e implantações do IoT Edge
Se você receber um erro ao implantar o SQL Edge por meio do Azure IoT Edge, verifique se o iotedge
serviço está configurado e em execução corretamente. Os seguintes documentos podem ser úteis na solução de problemas relacionados ao Azure IoT Edge:
Erros de comando do Docker
Se você receber erros para qualquer docker
comando, verifique se o serviço Docker está em execução e tente executar com permissões elevadas.
Por exemplo, no Linux, você pode obter o seguinte erro ao executar docker
comandos:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Se você receber esse erro no Linux, tente executar os mesmos comandos precedidos do sudo
. Se isso falhar, verifique se o serviço Docker está em execução e inicie-o, se necessário.
sudo systemctl status docker
sudo systemctl start docker
No Windows, verifique se você está iniciando o PowerShell ou seu prompt de comando como Administrador.
Erros de inicialização do contêiner do Azure SQL Edge
Se o contêiner do SQL Edge não for executado, tente os seguintes testes:
Se você estiver usando o Azure IoT Edge, verifique se as imagens do módulo foram baixadas com êxito e se as variáveis de ambiente e as opções de criação de contêiner estão especificadas corretamente no manifesto do módulo.
Se você estiver usando a implantação baseada em Docker ou Kubernetes, verifique se o
docker run
comando está formado corretamente. Para obter mais informações, consulte Implantar o Azure SQL Edge com o Docker e Implantar um contêiner do Azure SQL Edge no Kubernetes.Se você receber um erro como
failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use.
, está tentando mapear a porta de contêiner 1433 para uma porta que já está em uso. Isso pode acontecer se você estiver executando o SQL Edge localmente na máquina host. Isso também pode acontecer se você iniciar dois contêineres do SQL Edge e tentar mapeá-los ambos para a mesma porta de host. Se isso acontecer, use o-p
parâmetro para mapear a porta de contêiner 1433 para uma porta de host diferente. Por exemplo:sudo docker run --cap-add SYS_PTRACE -e 'ACCEPT_EULA=1' -e 'MSSQL_SA_PASSWORD=<password>' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge-developer.
Se você receber um erro, como
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30tdout=1&tail=all: dial unix /var/run/docker.sock: connect: permission denied
ao tentar iniciar um contêiner, adicione seu usuário ao grupo docker no Ubuntu. Em seguida, saia e entre novamente, pois essa alteração afeta novas sessões.usermod -aG docker $USER
Verifique se há alguma mensagem de erro do contêiner.
docker logs e69e056c702d
Se você estiver usando qualquer software de gerenciamento de contêiner, verifique se ele suporta processos de contêiner executados como root. O processo sqlservr no contêiner é executado como root.
Por padrão, os contêineres do SQL Edge do Azure são executados como um usuário não raiz chamado
mssql
. Se você estiver usando pontos de montagem ou volumes de dados para persistir dados, verifique se omssql
usuário tem as permissões apropriadas no volume. Para obter mais informações, consulte Executar como usuário não raiz e Persistir dados.Se o contêiner do SQL Edge Docker sair imediatamente após o início, verifique os logs do docker. Se você estiver usando o PowerShell no Windows com o
docker run
comando, use aspas duplas em vez de aspas simples. Com o PowerShell Core, use aspas simples.Revise os logs de erros do SQL Edge.
Falhas de conexão do SQL Edge
Se você não conseguir se conectar à instância do SQL Edge em execução em seu contêiner, tente os seguintes testes:
Certifique-se de que seu contêiner do SQL Edge está em execução observando a
STATUS
coluna dadocker ps -a
saída. Se não, usedocker start <Container ID>
para iniciá-lo.Se você mapeou para uma porta de host não padrão (não 1433), certifique-se de estar especificando a porta em sua cadeia de conexão. Você pode ver o
PORTS
mapeamento da porta na coluna dadocker ps -a
saída. Para obter mais informações sobre como se conectar ao Azure SQL Edge, consulte Conectar e consultar o Azure SQL Edge.Se você implantou anteriormente o SQL Edge com um volume de dados mapeado ou contêiner de volume de dados e agora usa o volume de dados mapeado existente ou o contêiner de volume de dados, o SQL Edge ignora o valor da variável de
MSSQL_SA_PASSWORD
ambiente. Em vez disso, a senha de usuário SA configurada anteriormente é usada. Isso acontece porque o SQL Edge reutiliza os arquivos de bancos de dados existentesmaster
no volume mapeado ou no contêiner de volume de dados. Se você se deparar com esse problema, você pode usar as seguintes opções:- Conecte-se usando a senha usada anteriormente, se ela ainda estiver disponível.
- Configure o SQL Edge para usar um volume mapeado diferente ou um contêiner de volume de dados.
- Remova os arquivos de banco de dados existentes
master
(master.mdf
emastlog.mdf
) do volume mapeado ou do contêiner de volume de dados.
Revise os logs de erros do SQL Edge.
Configuração do SQL Edge e logs de erros
Por padrão, os /var/opt/mssql/log
logs de erro da Borda SQL estão presentes no diretório dentro do contêiner e podem ser acessados usando qualquer uma das seguintes maneiras:
Se você montou um diretório host para
/var/opt/mssql
quando criou seu contêiner, você pode, em vez disso, procurar nolog
subdiretório no caminho mapeado no host.Usando um prompt de comando interativo para se conectar ao contêiner. Se o contêiner não estiver em execução, primeiro inicie-o. Em seguida, use um prompt de comando interativo para inspecionar os logs. Você pode obter o ID do contêiner executando o comando
docker ps
.docker start <ContainerID> docker exec -it <ContainerID> "/bin/bash"
A partir da sessão bash dentro do contêiner, execute os seguintes comandos:
cd /var/opt/mssql/log cat errorlog
Se o contêiner do SQL Edge estiver em execução e você puder se conectar à instância usando ferramentas de cliente, poderá usar o procedimento
sp_readerrorlog
armazenado para ler o conteúdo do log de erros do SQL Edge.
Executar comandos em um contêiner
Se você tiver um contêiner em execução, poderá executar comandos dentro do contêiner a partir de um terminal host.
Para executar o ID do contêiner:
docker ps -a
Para iniciar um terminal bash na execução do contêiner:
docker exec -it <Container ID> /bin/bash
Agora você pode executar comandos como se estivesse executando-os no terminal dentro do contêiner. Quando terminar, digite exit
. Isso é encerrado na sessão de comando interativa, mas seu contêiner continua a ser executado.
Habilitar registro detalhado
Se o nível de log padrão para o mecanismo de streaming não fornecer informações suficientes, o log de depuração para o mecanismo de streaming poderá ser habilitado no SQL Edge. Para habilitar o log de depuração, adicione a variável de ambiente à sua implantação do RuntimeLogLevel=debug
SQL Edge. Depois de ativar o log de depuração, tente reproduzir o problema e verifique se há mensagens ou exceções relevantes nos logs.
Nota
A opção Registro detalhado só deve ser usada para solução de problemas e não para carga de trabalho de produção regular.