SQL 백업이 내 하드 드라이브 공간을 모두 차지하고 있습니다.

SQL 백업이 내 하드 드라이브 공간을 모두 차지하고 있습니다.

SQL 데이터베이스를 백업하기 위해 매일 실행하는 작업이 있습니다. 방금 새 서버를 구입하고 데이터베이스 백업을 새 서버로 전송하고 복원하려고 했습니다. 우리 데이터베이스는 대부분의 회사만큼 크지 않으며 크기도 40GB에 불과합니다. 백업을 복사하러 갔더니 하드 드라이브가 꽉 차서 저장되어 있고 백업 크기가 900GB라는 것을 알았습니다. 다른 SQL 버전에서 동일한 작업을 사용해 본 적이 있지만 데이터베이스 백업이 이렇게 커진 적은 없습니다.

  • Windows Server 2008 R2 실행
  • SQL Server 2008 R2 Ent 실행
  • 64비트

작업에 문제가 있는 스크립트를 작성했는지 확실하지 않습니다. 이에 대한 코드는 다음과 같습니다.

디스크에 데이터베이스 [데이터베이스] 백업 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.COMPANY\MSSQL\Backup\DATABASE.BAK' WITH NOFORMAT, NOINIT, NAME = N'DATABASE', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO @backupSetId를 int로 선언 select @backupSetId = msdb..backupset의 위치(여기서 데이터베이스_이름=N'DATABASE' 및 backup_set_id=(select max(backup_set_id) from msdb..backupset, 여기서 데이터베이스_이름=N'DATABASE') @인 경우) backupSetId가 null입니다. start raiserror(N'확인에 실패했습니다. 데이터베이스 ''DATABASE''에 대한 백업 정보를 찾을 수 없습니다.', 16, 1) end RESTORE VERIFYONLY FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.COMPANY \MSSQL\Backup\DATABASE.BAK' 파일 포함 = @backupSetId, NOUNLOAD, NOREWIND GO

(코드 태그를 추가했지만 어떤 이유로 사용되지 않았습니다)

내 데이터베이스 백업이 계속 증가하는 이유를 누군가 말해 줄 수 있습니까? 미리 도움을 주셔서 감사합니다.

답변1

NOINIT = 기존 백업 세트를 보존하면서 백업 세트가 지정된 미디어 세트에 추가됨을 나타냅니다.

백업을 추가하는 중입니다. 백업이 계속 커지는 것을 원하지 않으면 INIT를 사용해야 합니다.

http://technet.microsoft.com/en-us/library/ms186865.aspx

답변2

백업할 때마다 끝에 추가됩니다.

답변3

DanBig과 joeqwerty가 말했듯이 백업은 동일한 파일에 추가됩니다. 추가하거나 덮어쓰지 않고 버전을 유지하려면 날짜가 지정된 개별 파일을 만드세요. 예를 들어:

Declare @DBname varchar(255),
        @SQL nvarchar(max), 
        @today nvarchar(50),
        @servername nvarchar(50)

set @today = convert(nvarchar,GETDATE(),12)  
set @servername = REPLACE(@@SERVERNAME,'\','-')
set @DBName = 'YourDB'

set @SQL='BACKUP DATABASE [' + @DBName + '] TO  DISK = N''c:\some backup path\' + @servername + '-' + @DBName + '-' + @today + '.bak'' WITH FORMAT, INIT,  NAME = N''Full ' + @DBName + ' Database Backup'', SKIP, NOREWIND, NOUNLOAD,  STATS = 10'
EXEC SP_EXECUTESQL @SQL

관련 정보