Симптоми
Когато стартирате екземпляр на Microsoft SQL Server 2017 в контейнер на Linux Docker, може да получите съобщение за грешка за недостиг на памет.
Причина
SQL Server на Linux по подразбиране използва меко ограничение от 80% от общата физическа памет, когато конфигурацията memory.memorylimitmb не е разрешена; За Docker контейнери SQL се използва 80% от общата памет на хоста, вместо да се ограничава до 80% памет, заделена за Docker контейнер. Това неправилно ограничение на паметта позволява на SQL Server да се опита да използва повече памет от тази, която е налична за контейнер и може да е кандидат за прекратяване от OOM Killer.
Забележка Когато създавате Docker образа, трябва да зададете –m, за да ограничите Docker паметта. Вижте следващата статия за повече информация.
Решение
Корекция за този проблем е включена в следната актуализация за SQL Server:
Сборна актуализация 10 за SQL Server 2017
Забележка Ако конфигурацията memory.memorylimitmb не е конфигурирана, тази корекция позволява на SQL Server да се ограничи до меко ограничение от 80% от паметта, заделена за контейнера.
За компилациите на SQL Server
Всяка нова компилация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за вашата версия на SQL Server:
Най-новата компилация за SQL Server 2017
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
Справки
Научете повече за стандартната терминология , която Microsoft използва за описване на актуализациите на софтуера.