SQL Server 2012에서 많은 SQL 쿼리를 실행할 때 시스템 디스크 공간이 부족합니다


14

SQL Server 2012를 처음 접했을 때 누군가 도울 수 있으면 감사하겠습니다. 거대한 데이터베이스의 복사본을 SQL Server 2012로 복원했으며 이에 대한 간단한 쿼리를 실행하려고했습니다.

데이터베이스 136898115줄 테이블에 대해 SELECT 쿼리를 실행하려고합니다 . 이 SELECT쿼리에는 간단한 WHERE절만 있습니다. 이 쿼리를 실행할 때마다 시스템 디스크 (Windows가 설치된 파티션- C:\)에 공간이 부족하여 (이 파티션에는 6GB의 사용 가능한 공간 만 있음) 실패하고 이유를 이해할 수 없습니다. tempdb가 14TB 이상의 여유 공간이있는 다른 드라이브에 있도록 정의했습니다. 물론 내 데이터베이스도 다른 드라이브에 있습니다.

시스템 파티션에 공간이 부족한 이유는 무엇입니까? 페이지 파일입니까?


2
시스템에서 공간이 부족한 경우 SSMS를 실행하지만 동일한 시스템입니다. 실제 SQL 서버에서 SSMS를 사용하고 있습니다.
royv

2
일반적으로,이 SQL 서버 (의 다른 응용 프로그램을 실행하지 않도록 권장 하지 SSMS) 윈도우 상자 또는 확인 최대 메모리 설정은 충분한 RAM을 허용하는 낮은 충분하다 할 수 있습니다. 여기 내 대답을 참조하십시오 : dba.stackexchange.com/a/19776/2718
Jon Seigel

답변:


12

SSMS 쿼리 결과는 기본적으로 C : 드라이브에 캐시됩니다. 도구 \ 옵션으로 이동하십시오. 참조 부착. 더 많은 저장 공간이있는 다른 볼륨으로 변경하십시오.

여기에 이미지 설명을 입력하십시오


1
결과를 파일로를 선택하면 기본적으로 다른 이름으로 저장 대화 상자가 열립니다. SSMS가 기본적으로 결과 집합을 디스크에 저장한다고 생각하지 않지만 잘못되었을 수 있습니다.
Jon Seigel 2012 년

1
검색어 창에 표시되는 결과는 내 게시물마다 캐시됩니다. 드라이브를 확인하고 SSMS에서 큰 쿼리를 실행 한 후 다시 확인하십시오. 달리 지정하지 않으면 C : 드라이브에 스토리지 손실이 표시됩니다.
Eric Higgins

1
맞습니다. 내 페이지 파일과 관련이 없습니다. 페이지 파일을 다른 드라이브로 옮겼는데 여전히 C : 드라이브에 공간이 부족합니다.
royv

11

좋아, 나는 알아 냈다 : Eric 와 나는 둘 다 옳았다!

  • 대화 상자의 경로는 내가 말한 것처럼 쿼리 결과를 저장하기위한 기본 경로입니다.
  • 쿼리 결과 디스크 캐시되지만 (잘못된 경우) 로컬 프로필 임시 폴더 ( C:\Users\<UserName>\AppData\Local\Temp여기서는 여기)입니다. 확인 했는데이 캐싱을 해제하는 확실한 방법이없는 것 같습니다.

따라서 테이크 아웃은 다음과 같습니다.

  • SQL 상자에서 SSMS를 직접 실행하지 마십시오
  • SELECT *결과 집합이 프로필 폴더에 맞지 않는 한 SSMS의 거대한 테이블에서 가져 오지 마십시오.
  • SQL Server 최대 메모리 설정이 올바르게 구성되어 있는지 확인하십시오 (페이지 파일 증가와 관련하여이 문제의 원인이되었거나 아닐 수 있음).

7

방금 같은 문제가 발생했습니다. 위의 답변을 읽은 후 다음을 발견했습니다.

도구 | 옵션은 답이 아닙니다. 광산은 Y : 드라이브로 설정되었지만 쿼리가 실행되고 C : 드라이브의 공간이 2.9GB에서 5.04MB로 나갔습니다 (쿼리를 죽이기 전에).

그래서 Jon이 말한 Temp 디렉토리에 결과가 캐싱 될 것이라고 생각했습니다. (모든 XML이 큰 행을 반환하면 모든 행이 매우 크므로) Jon이 말한 것입니다.

임시 파일이 작성되는 위치를 변경 한 것은 내 환경 변수를 열고 사용자 변수 TEMP 및 TMP (둘 다 C : \ Temp로 설정 됨)를 Z : \ Temp에 쓰도록 편집하는 것입니다.

이 변경 후 쿼리가 Z : \ Temp 디렉토리에 매우 큰 파일을 만드는 것을 볼 수있었습니다.


vm의 HD 공간을 업그레이드하고 많은 네트워크 스토리지를 확보하기 위해 진행해야하는 프로세스가있을 때 유용한 정보입니다. 네트워크 문제로 병목 현상 파일 전송 속도가 발생하면 c : \ 느린 쿼리 성능을 벗어날 수 있습니까?
GibralterTop 2016 년

3 년 전이었는데 당시의 상황을 정확히 기억할 수 없습니다. 나는 이제 엄청나게 많은 양의 RAM과 처리 능력을 갖춘 랩탑을 가지고 있습니다. Z : 드라이브가 내 VM의 "로컬"드라이브 일 뿐이라고 확신합니다. 왜 그들이 그것을 D : 또는 E :라고 표시하지 않았는지 확실하지 않지만 그 부분은 내가 통제 할 수 없었습니다. 그래서 나에게는 실제로 네트워크 문제가 없었습니다.
Nick Ryan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.