Eigentlich gibt es einen netten kleinen Trick, um zu bekommen, wonach Sie suchen. Das Problem/die Frage besteht darin, wie SQL Server "temporär" Speicher freigeben kann, den er nicht unbedingt benötigt, und ihn dann wie erforderlich wieder rekonstruieren zu lassen.
Um dies zu tun, führen Sie das folgende Skript:
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
Put in Ihre eigenen Werte für {Niedrigwassermarke} und {Hochwassermarke} (in MB).
Das wird der Speicher bis auf einen Mindestbetrag erzwingen, dann wieder öffnen, sofort, wenn SQL Server braucht/will.
Das einzige, was noch zu tun, ist das Skript Zeitplan in regelmäßigen Abständen ausgeführt werden.
Empfehlung:
Wo SQL Server nicht stark genutzt wird, versuchen Sie dies automatisch alle 6 Stunden ausgeführt wird. Bei starker Beanspruchung einmal alle 24 Stunden (etwa mitten in der Nacht oder kurz vor dem Start). Ihre Verwendung wird variieren.
Wie messen Sie diese Zahlen? Denken Sie daran, dass Task-Manager Zahlen geben kann, die irreführend sind (ich würde immer für Perfmon entscheiden und die privaten/virtuellen Bytes betrachten) –
Ich überwache den SQL-Server mit Task-Manager und separate Dotnet-Anwendung, die PerformanceCounter-Klasse verwendet –