En realidad, hay un pequeño truco para conseguir lo que estás buscando. El problema/pregunta es cómo hacer que SQL Server "temporalmente" renuncie a la memoria que puede no necesitar de manera agresiva, luego déjelo que lo vuelva a plantear según sea necesario.
Para ello, ejecute el siguiente script:
EXEC sys.sp_configure N'show advanced options', N'1'
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'max server memory (MB)', N'{low water mark}'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'max server memory (MB)', N'{High water mark}'
GO
RECONFIGURE WITH OVERRIDE
GO
EXEC sys.sp_configure N'show advanced options', N'0'
RECONFIGURE WITH OVERRIDE
GO
poner en sus propios valores para {marca de agua de baja} y {} la cuota máxima (en MB).
Esto forzará la memoria a una cantidad mínima, luego la abrirá de nuevo de inmediato si SQL Server lo necesita/lo quiere.
Lo único que queda por hacer es programar el script para que se ejecute periódicamente.
Recomendación:
Cuando SQL Server no se utiliza mucho, intente ejecutar esta cada 6 horas de forma automática. Si se usa mucho, corra una vez cada 24 horas (por ejemplo, en el medio de la noche o justo antes de que comience el día). Tu uso variará
¿Cómo mide estas cifras? Tenga en cuenta que el administrador de tareas puede dar cifras que son engañosas (siempre optaría por perfmon, y miro los bytes privados/virtuales) –
Estoy monitoreando el servidor sql usando el administrador de tareas y la aplicación de red de puntos separada que usa la clase PerformanceCounter –