Sintomas
Quando você executa uma instância do Microsoft SQL Server 2017 dentro de um contêiner do Docker Linux, você pode receber uma mensagem de erro de falta de memória.
Causa
O SQL Server no Linux, por padrão, usa um limite flexível de 80% da memória física total quando a configuração de memória. memorylimitmb não está habilitada; Para contêineres do Docker o SQL usado para considerar 80% da memória total do host em vez de limitar-se a 80% de memória alocada para o contêiner do Docker. Esse limite de memória incorreto permite que o SQL Server tente consumir memória mais do que está disponível para o contêiner e pode ser um candidato para demissão do eliminador de OOM.
ObservaçãoAo criar a imagem do Docker, você precisa especificar – m para limitar a memória do Docker. Para obter mais informações, consulte o artigo a seguir.
Resolução
Uma correção para esse problema está incluída na atualização a seguir para SQL Server:
Atualização cumulativa 10 para SQL Server 2017
Observação Se a configuração Memory. memorylimitmb não estiver configurada, esta correção permitirá que o SQL Server se limite para um limite flexível de 80% da memória atribuída para o contêiner.
Sobre as compilações do SQL Server
Cada novo Build do SQL Server contém todos os hotfixes e correções de segurança que estavam na compilação anterior. Recomendamos instalar o Build mais recente para a sua versão do SQL Server:
Status
A Microsoft confirmou que este é um problema nos produtos Microsoft que estão listados na seção "Aplicável a".
Referências
Saiba mais sobre a terminologia padrão que a Microsoft usa para descrever atualizações de software.