디스크 공간이 부족하여 데이터베이스에 새 페이지를 할당 할 수 없습니다


13

SQL Server 가져 오기 및 내보내기 마법사를 사용하면 다음 오류가 발생합니다.

오류 0xc0202009 : 데이터 흐름 작업 1 : SSIS 오류 코드 DTS_E_OLEDBERROR.
OLE DB 오류가 발생했습니다. 오류 코드 : 0x80004005
파일 그룹 'PRIMARY'에 디스크 공간이 부족하여 데이터베이스 'database'에 새 페이지를 할당 할 수 없습니다. 파일 그룹에 객체를 삭제하거나 파일 그룹에 파일을 추가하거나 파일 그룹의 기존 파일에 대해 자동 증가를 설정하여 필요한 공간을 만듭니다.

일련의 2GB 파일을 업로드하려고하는데 4 번째 파일을로드하는 동안 데이터베이스 속성> 파일로 이동하여 파일 그룹의 자동 증가를 2500MB로 변경하고 최대 크기를 무제한으로 변경 한 후에도 위의 오류 메시지가 계속 나타납니다.

가장 좋은 해결 방법은 무엇입니까? 이 데이터는 궁극적으로 약 60-80GB를 차지합니다.


1
어떤 버전의 SQL Server를 실행하고 있습니까? "데이터베이스"에 대한 데이터 파일을 저장하는 드라이브에 사용 가능한 여유 공간이 얼마나됩니까?
nabrond

2
오류 메시지는 "최상의 해결 방법"을 알려줍니다 . 파일 그룹에서 객체를 삭제하거나 파일 그룹에 파일을 추가하거나 파일 그룹의 기존 파일에 대해 자동 증가를 설정하여 필요한 공간을 만듭니다. 우리가 무엇을 더 말할 수 있는지 잘 모르겠습니다.

1
Brandon, SQL SERVER 2012. 데이터베이스의 데이터 파일을 저장하는 드라이브에 760gb의 여유 공간. 켄, 나는 자동 성장을 활성화했고, 자동 성장은 2500MB 증가하고 최대 크기는 무제한입니다. 여전히이 문제가 발생합니까? 활성화해야하는 여러 자동 성장이있을 수 있습니까?

1
DB를 수동으로 확장하려고 했습니까?

1
자동 증가는 요소 사이에서만 작동하고 하나의 삽입물이 한계를 초과 할 수 있습니까? 내기가 될 것입니다-2500GB 자동 증가에서 20000gb 삽입이 실패하면 900MB의 여유 공간이 있고 삽입이 실패 할 수 있습니다.
TomTom

답변:


11

SQL Express 데이터베이스는 10g에서 최고를 차지할 것입니다. 나는 이것이 당신이 얻는 오류 메시지와 유사하다고 생각합니다.

나는 한 번 클라이언트 에서이 문제에 부딪 쳤고 알아내는 데 시간이 걸렸다.

어떤 버전의 SQL을 실행하고 있습니까?


1
이 솔루션은 저를 구했습니다! Express 버전을 사용하고 Dev로 업그레이드했습니다.
이스라엘 로드리게스

7

당신이 있습니까 장해야 그것의

파일 그룹 'PRIMARY'에 디스크 공간이 부족하여 데이터베이스 'database'에 새 페이지를 할당 할 수 없습니다.

그리고 아닙니다

파일 그룹 'PRIMARY'에 디스크 공간이 부족하여 데이터베이스 'tempdb'에 새 페이지를 할당 할 수 없습니다.

?

실제로 [tempdb]오류 메시지 [tempdb]에있는 경우 다른 데이터베이스와 분리 된 적절한 크기의 디스크에 있는지 확인하여 별도로 관리해야 합니다.

[tempdb]오류 메시지에 없으면 이런 종류의 "업로드"가 [tempdb]매우 어려울 것입니다. 가 [tempdb]같은 디스크 / LUN에 'database'? 그렇다면 여러 데이터베이스에서 여러 번의 파일 증가 시도로 인해 문제가 악화 될 수 있습니다. 따라서이 "업로드"를 수행하는 동안 모니터하고 있는지 확인하십시오 [tempdb].

경우 [tempdb]별도의 드라이브에 당신이있어 특정 충분한 공간이 있는지, 내가 가서 줄 크기는 그것의 최종 상태의 크기로 기대에 데이터 파일 :

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE
    (
    NAME = datafile,
    SIZE = 60GB,
    FILEGROWTH = 5GB
);
GO

또한 데이터베이스의 로그 파일이 데이터 파일과 분리되어 있는지 확인하십시오. 그렇지 않은 경우 경쟁 성장 이벤트로 돌아갑니다. 그것들이 별도의 디스크에 있다면, 나는 또한 그것들을 적절하게 진행하고 크기를 조정할 것입니다.

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 8000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 16000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 24000MB
);
GO
...

원하는 로그 파일 크기에 도달 할 때까지 80GB라고 부르면 특정 크기로 성장을 설정할 수 있습니다. Paul RandalKimberly Tripp에서 권장하는 값을 사용 하고 있습니다.

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 80000MB,
    FILEGROWTH = 8000MB
);

6

수동으로 재배하십시오.

1. 개체 탐색기에서 SQL Server 데이터베이스 엔진 인스턴스에 연결 한 다음 해당 인스턴스를 확장합니다.

데이터베이스를 확장하고 증가시킬 데이터베이스를 마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭합니다.

3. Database Properties에서 Files 페이지를 선택하십시오.

기존 파일의 크기를 늘리려면 파일의 초기 크기 (MB) 열의 값을 늘리십시오. 데이터베이스 크기를 1MB 이상 늘려야합니다.

5. 새 파일을 추가하여 데이터베이스 크기를 늘리려면 추가를 클릭 한 다음 새 파일의 값을 입력하십시오. 자세한 내용은 데이터베이스에 데이터 또는 로그 파일 추가를 참조하십시오.

6. OK를 클릭하십시오.

보낸 사람 : MSDN


4
수동 확장은 자세한 내용을 알려줄 수 있으므로 좋습니다. 필자의 경우 : "결과 누적 데이터베이스 크기가 데이터베이스 당 라이선스 한도 인 10240MB를 초과하므로 CREATE DATABASE 또는 ALTER DATABASE가 실패했습니다." 자기 설명이 필요합니다.
user824276

1

다음 스크립트를 사용하여 데이터베이스에서 공간을 확보 할 수도 있습니다.

DELETE FROM STActionLog
where id in (SELECT TOP 100000 id
             FROM STActionLog
             ORDER BY actionDate ASC)

delete from STActionLog
where actionDate < '2019-08-01'

이것들은 오류에 도움이됩니다 :) 또한 컴퓨터에 충분한 디스크 공간이 있는지 확인하십시오.

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