Eu obtive abaixo a definição de Bob Dorr sobre o que a memória máxima do servidor no SQL Server 2012 controla. Você também pode ler os Manuais Online para obter mais detalhes
A memória máxima do servidor controla a alocação de memória do SQL Server, incluindo o pool de buffers, a memória de compilação, todos os caches, as concessões de memória qe, a memória do gerenciador de bloqueios e a memória CLR (basicamente qualquer "funcionário", conforme encontrado em dm_os_memory_clerks). A memória para pilhas de encadeamentos, heaps de memória, provedores de servidores vinculados que não sejam o SQL Server ou qualquer memória alocada por uma DLL "não SQL Server" não é controlada pela memória máxima do servidor.
A memória alocada para a pilha de threads, DLL de terceiros, provedor de servidor vinculado que não seja da Microsoft (como MySQL.PostgreSQL etc.) ou qualquer DLL carregada no espaço de endereço do SQL Server que não seja o SQL Server é alocada fora da memória máxima do servidor. A operação de backup do IIRC no SQL Server 2012 também ainda está alocada de memória fora do buffer pool.
Você está usando um servidor vinculado para consultar outro RDBMS? Qualquer outro software instalado na mesma máquina Windows. Você pode postar em algum local compartilhado a saída das seguintes consultas
select type,
sum(pages_kb)/1024 as [Memory utilized in MB],
sum(awe_allocated_kb)/1024 as [Memory allocated though Windows API]
from sys.dm_os_memory_clerks
group by type
order by [Memory utilized in MB] desc
Go
-------
select (virtual_address_space_committed_kb/1024) as virtual_address_space_committed_MB,
(locked_page_allocations_kb/1024) locked_page_allocations_MB,
(pages_kb/1024) [memory allocated MB]
from sys.dm_os_memory_nodes
Go
-------
SELECT SUM (pages_in_bytes)/1024 as 'KB Used', type
FROM sys.dm_os_memory_objects
GROUP BY type
ORDER BY 'KB Used' DESC;
GO
--------
select name,
type,
sum(pages_kb)/1024 as [Mem MB],
sum(entries_count) as [Total Entry count] from sys.dm_os_memory_cache_counters
group by
type, name
order by [Mem MB] desc
Go
-----
select * from sys.dm_os_loaded_modules where company <> 'Microsoft Corporation'
go
Você também pode fazer o upload da DBCC MMEMORYSTATUS
saída completa em algum local compartilhado e postar o link aqui. Isso ajudaria a entender qual componente está consumindo memória
Edit: Conforme a saída do estado da memória dbcc, posso ver 2 nós NUMA e a memória utilizada por cada nó é de aproximadamente
Node 1 : VM Committed 33554380
Node 2: VM Committed 33554420
Total is approx 64 G.
Novamente, se você vir o Gerenciador de Memória no estado da memória,
Memory Manager KB
---------------------------------------- -----------
VM Reserved 260726964
VM Committed **67108820**
A VM confirmada é, na verdade, a Memória Virtual confirmada pelo SQL Server e, como essa memória está comprometida, ela possui physical memory backing it
. Isso novamente, o que me faz pensar que o SQL Server está usando 65 G, conforme definido na memória máxima do servidor
É isso que é a memória máxima do servidor. Portanto, a memória é bem distribuída entre os dois nós. Você também pode adicionar a saída da consulta abaixo para verificar. Por favor, adicione a captura de tela
SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;
?