SQL 備份佔據了我所有的硬碟空間

SQL 備份佔據了我所有的硬碟空間

我每天都有一份工作來備份我的 SQL 資料庫。我剛剛購買了一台新伺服器,打算將資料庫備份傳輸到新伺服器並恢復它。我們的資料庫不像大多數公司那麼大,只有 40 GB。當我去複製備份時,我注意到儲存它的硬碟已滿,備份大小為 900GB。我在不同的 SQL 版本上使用過相同的作業,而資料庫備份從未像這樣成長過。

  • 執行 Windows Server 2008 R2
  • 執行 SQL Server 2008 R2 入門
  • 64位

我不確定我的腳本是否有問題,以下是它的程式碼:

將資料庫[資料庫] 備份到磁碟= N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.COMPANY\MSSQL\Backup\DATABASE.BAK',包含NOFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWINDFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWINDFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWINDFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWINDFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWINDFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWINDFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWINDFORMAT、NOINIT、NAME = N'DATABASE'、SKIP、NOREWIND 、NOUNLOAD、 STATS = 10 GO 將@backupSetId 宣告為int select @backupSetId =position from msdb..backupset where database_name=N'DATABASE' and backup_set_id=(select max(backup_set_id) from msdataname No ' ) if @ backupSetId 為null begin raiserror(N'驗證失敗。找不到資料庫''DATABASE'' 的備份資訊。', 16, 1) end RESTORE VERIFYONLY FROM DISK = N'C:\Program Files\Microsoft SQL Server \MSSQL10_50.COMPANY \MSSQL\Backup\DATABASE.BAK' 帶有 FILE = @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

相關內容