Management Studio System.OutOfMemoryException


38

Microsoft SQL Server 2012를 사용하고 있으며 Management Studio 내에서 간단한 쿼리를 실행하려고합니다. SSMS에서 서버에서 실행중인 다음 오류가 발생합니다.

배치를 실행하는 동안 오류가 발생했습니다. 오류 메시지 : 'System.OutOfMemoryException'유형의 예외가 발생했습니다.

시스템에 24GB의 RAM이 설치되어 있지만 작업 관리자에서 sqlservr.exe 프로세스는 2.9GB 만 사용합니다.

RAM 사용을 제한하는 설정이 있습니까?

답변:


39

이 오류는 Management Studio에 SQL Server 서비스가 아니라 메모리가 부족함을 나타냅니다. 64 비트 SQL Server를 설치 한 경우에도 SQL Server Management Studio 실행 파일은 32 비트 응용 프로그램입니다.

이는 Management Studio로 돌아 오는 결과 세트의 크기로 인한 것일 수 있습니다. SELECT * FROM really_big_table과 같은 것을 실행하고 있습니까? 자세한 내용은 http://support.microsoft.com/kb/2874903 을 참조 하십시오 .


19

Mike는받는 오류 메시지가 SQL Server가 아니라 Management Studio 응용 프로그램 자체에서 온 것입니다. 로컬 워크 스테이션의 메모리는 소진되었습니다. 클라이언트 응용 프로그램에 160 억 행을 가져 오려고 시도했을 때 (그리드의 많은 데이터가 메모리 측면에서 상당히 비싸기 때문에 TOP등을 사용하여 쿼리를 제한하십시오) -어쨌든 모든 로컬 메모리를 사용하기에 충분한 데이터로 할 수있는 실제적인 일이 무엇인지 모르겠습니다.

그러나 다른 문제를 해결하고 싶습니다. 작업 관리자를 사용하여 SQL Server가 사용하는 메모리 양을 평가하고 싶습니다. 이러지 마십시오; 대담한 거짓말 쟁이입니다. 이 답변 에서 복사 (귀하의 질문은 두 가지이므로 실제로 중복으로 닫을 수는 없습니다) :


결코 작업 관리자를 신뢰하여 SQL Server가 사용중인 메모리 양을 알려줄 수는 없습니다. 이 기간 동안 작업 관리자 사용을 중지하십시오. 성능 카운터 사용-DMV를 사용하여 성능 카운터를 쿼리 할 수도 있습니다.

SELECT object_name, cntr_value 
  FROM sys.dm_os_performance_counters
  WHERE counter_name = 'Total Server Memory (KB)';

도구> 옵션> 환경> 키보드> 쿼리 바로 가기에서이를 쿼리 바로 가기로 저장하고 작업 관리자에서 부정확 한 결과를 얻는 것보다 훨씬 빠르게 쿼리 창에서 정확한 결과를 얻을 수 있습니다.

다음 쿼리를 사용하여 메모리 부족 (및 메모리에 대한 작업 수행 가능 여부)을 확인할 수도 있습니다.

SELECT object_name, cntr_value
  FROM sys.dm_os_performance_counters
  WHERE counter_name IN ('Total Server Memory (KB)', 'Target Server Memory (KB)');

-- SQL Server 2012:
SELECT physical_memory_kb FROM sys.dm_os_sys_info;

-- Prior versions:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

EXEC sp_configure 'max server memory';

위의 명령은 새로운 버전의 SQL을위한 것입니다. SQL 2008 R2 서버의 경우 명령이 약간 다릅니다. 후속 의견이 여기에 넣을만큼 형식이 좋지 않기 때문에 서버에 대해이 게시물에 다른 게시물을 추가하겠습니다.
— David Bridge

15

나도 같은 경우였다. 내 SQL Server Management Studio는 며칠 동안 문을 열었습니다. 나는 그것을 다시 시작하고 해결되었습니다.


9

IntelliSense를 끄면 도움이됩니다. 또한 추가 기능을 확인하는 것이 좋습니다 (RedGate 도구 및 ApexSQL과 같은 것이 나에게 문제를 악화 시켰습니다).

이 문제는 며칠 동안 저를 괴롭 혔으며 솔직히 말해서 Microsoft의 약점입니다. 요즘에는 빅 데이터, 64 비트 서버 및 데스크톱 환경을 다루기 때문에 실제로 64 비트 도구 세트가 있어야합니다.


1
필자의 경우 RedGate SQL Prompt는 intellisense에 내장 된 SSMS와 싸우고있었습니다. SSMS 인텔리전스를 끄면 SQL Prompt도 훨씬 잘 작동합니다.
— TTT

1

SQL 2008 R2의 경우 메모리 쿼리 명령 (Aron Bertrand의 게시물)은 다음과 같습니다.

SELECT object_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name = 'Total Server Memory (KB)';

SELECT object_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE counter_name IN ('Total Server Memory (KB)', 'Target Server Memory (KB)');

-- SQL Server 2012:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

-- Prior versions:
SELECT physical_memory_in_bytes FROM sys.dm_os_sys_info;

또한 명령은

EXEC sp_configure 'max server memory';

고급 옵션을 활성화하지 않으면 작동하지 않을 수 있습니다. 예를 들어 먼저

EXEC sp_configure 'show advanced options',1
RECONFIGURE

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.