Eu tenho uma máquina Ubuntu de 64 GiB com o SQL Server 2017 instalado. A configuração memory.memorylimitmb
para qualquer valor superior a 63695 megabytes é ignorada. Configurá-lo para 67.000 megabytes (que é aproximadamente 62,3 GiB) ainda resulta em SSMS relatando 63.695 MB disponíveis (servidor de clique com o botão direito do mouse, propriedades - geral - linha de memória). As configurações mais baixas são refletidas lá muito bem.
Isso faz com que o SQL Server não use toda a memória disponível, ele usa apenas 59,2, deixando mais de 4 GB vazios.
Novamente, este é o meu "mssql.conf":
[memory]
memorylimitmb = 67000
Mas esta é a quantidade de memória relatada pelo SSMS:
(nota: esta NÃO é a configuração de "memória máxima", é aqui que o SSMS simplesmente diz quanta memória está instalada na máquina, em "Servidor - Propriedades - Geral - Memória")
É a forma como o Linux está mostrando a memória disponível. Por exemplo, pegue a seguinte máquina virtual do Azure:
Se você observar qual é a memória disponível relatada para o servidor (usando o exemplo acima como o servidor de exemplo), verá a quantidade relatada de 16010. Tudo o que o SQL Server está fazendo é relatar o que o sistema operacional diz, neste caso, mesmo se você altera o valor para um número muito maior (acima de 16 GB), não há nada que o SQL Server possa fazer, pois não é isso que o sistema operacional está relatando (.
O SQL Server chama o sistema operacional para perguntar o que ele vê e, portanto, está apenas espelhando o que é mostrado (quando o valor de
memorylimitmb
for definido como igual à memória do servidor). Observe que você está vendo isso no SSMS, que está apenas obtendo o valor dos DMVs do SQL Server.