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.