在SQL Server中,數(shù)據(jù)庫可以存儲在不同的文件和文件組中。如果您的數(shù)據(jù)庫較小(100 MB 或更少),則無需過多擔(dān)心文件和文件組。但如果您有一個(gè)大型數(shù)據(jù)庫(數(shù) GB 或 TB),將數(shù)據(jù)分離到不同的文件中可以幫助您優(yōu)化性能。您可以將數(shù)據(jù)文件存儲在不同的磁盤中。這也將有助于更快地備份和恢復(fù)信息,因?yàn)槟恍枰謴?fù)整個(gè)數(shù)據(jù)庫,而只需恢復(fù)所選的文件或文件組。
備份類型
在 SQL Server 中,有不同類型的備份:
- 完整備份:包含整個(gè)數(shù)據(jù)庫信息。
- 差異備份:需要進(jìn)行完整備份,然后存儲上一次備份與當(dāng)前數(shù)據(jù)庫之間的差異。此備份需要的信息較少,因?yàn)樗鼉H存儲差異。
- 事務(wù)日志備份:存儲有關(guān)事務(wù)日志的信息。
為什么備份很重要?
您的數(shù)據(jù)庫可能會由于多種原因而損壞。備份將幫助您恢復(fù)在發(fā)生災(zāi)難和問題(如硬件故障、病毒攻擊或其他問題)時(shí)丟失的數(shù)據(jù)庫。
如何使用 SSMS 創(chuàng)建完整備份
您可以使用 SQL Server Management Studio (SSMS) 創(chuàng)建完整備份來還原 SQL Server 中的數(shù)據(jù)庫。為此,請打開 SSMS,右鍵單擊數(shù)據(jù)庫,然后選擇任務(wù) > 備份。
從 SSMS 選擇完整備份
在“備份數(shù)據(jù)庫”窗口中,選擇“完整備份類型”。
備份數(shù)據(jù)庫窗口
如何使用 T-SQL 創(chuàng)建完整數(shù)據(jù)庫備份
如果您想自動(dòng)備份,可以使用T-SQL代碼。T-SQL 是用于自動(dòng)執(zhí)行 SQL Server 任務(wù)的 SQL Server 語言。
以下示例顯示如何使用 T-SQL 創(chuàng)建完整備份。
BACKUP DATABASE [AdventureWorks2019] TO DISK = N'C:backupsAdventureWorks2019.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'AdventureWorks2019-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO |
如何自動(dòng)安排備份
您可以安排在特定時(shí)間運(yùn)行備份。為此,請?jiān)?SSMS 中創(chuàng)建備份,然后選擇“腳本”>“為作業(yè)編寫腳本操作”選項(xiàng)。
圖片
在 SSMS 中創(chuàng)建備份并將操作腳本寫入作業(yè)選項(xiàng)。
在新作業(yè)中,轉(zhuǎn)到“計(jì)劃”頁面并按“新建”按鈕創(chuàng)建新計(jì)劃。
您可以安排作業(yè)每天、每小時(shí)等運(yùn)行。
如何使用 SSMS 創(chuàng)建差異備份
首先,確保您已經(jīng)有完整備份。
接下來,右鍵單擊數(shù)據(jù)庫并選擇任務(wù) > 備份。
在備份類型中,確保選擇差異備份類型。
選擇備份類型差異
如何使用 T-SQL 創(chuàng)建差異備份
或者,您可以使用 T-SQL 命令創(chuàng)建差異備份。
BACKUP DATABASE [AdventureWorks2019] TO DISK = N'C:backupsAdventureWorks2019.bak' WITH DIFFERENTIAL , NOFORMAT, NOINIT, NAME = N'AdventureWorks2019-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO |
如何使用 SSMS 創(chuàng)建文件或文件組備份
在 SSMS 中,右鍵單擊數(shù)據(jù)庫并選擇任務(wù) > 備份。
選擇文件和文件組選項(xiàng)。
選擇要備份的文件和文件組,然后按“確定”。
如何使用 T-SQL 創(chuàng)建文件或文件組備份
或者,可以使用 T-SQL 命令創(chuàng)建文件或文件組備份。
BACKUP DATABASE [Northwind] FILEGROUP = N'PRIMARY' TO DISK = N'C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLBackupNorthwind.bak' WITH NOFORMAT, NOINIT, NAME = N'Northwind-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO |
如何使用 SSMS 恢復(fù)備份
要使用 SSMS 恢復(fù)備份,請轉(zhuǎn)到對象資源管理器,右鍵單擊數(shù)據(jù)庫,然后選擇恢復(fù)數(shù)據(jù)庫選項(xiàng)。
使用 SSMS 恢復(fù)備份
在“還原數(shù)據(jù)庫”窗口中,選擇要還原的數(shù)據(jù)庫和備份集,然后按“確定”。
如何使用 T-SQL 恢復(fù)備份
或者,可以使用 T-SQL 命令來恢復(fù)數(shù)據(jù)庫。
USE [master] RESTORE DATABASE [AdventureWorks2019] FROM DISK = N'C:backupsAdventureWorks2019.bak' WITH FILE = 10, NOUNLOAD, STATS = 5 GO |
如何使用 SSMS 恢復(fù)差異備份
要使用 SSMS 恢復(fù)數(shù)據(jù)庫,請轉(zhuǎn)到對象資源管理器,右鍵單擊數(shù)據(jù)庫,然后選擇“恢復(fù)數(shù)據(jù)庫”選項(xiàng)。
在“還原數(shù)據(jù)庫”窗口中,選擇要還原的數(shù)據(jù)庫,選擇完整備份,然后選擇要還原的差異集,然后按“確定”。
選擇完整備份
如何使用 T-SQL 恢復(fù)差異備份
或者,您可以使用 T-SQL 命令來恢復(fù)差異備份。
USE [master] RESTORE DATABASE [AdventureWorks2019] FROM DISK = N'C:backupsAdventureWorks2019.bak' WITH FILE = 10, NORECOVERY, NOUNLOAD, STATS = 5 RESTORE DATABASE [AdventureWorks2019] FROM DISK = N'C:backupsAdventureWorks2019.bak' WITH FILE = 11, NOUNLOAD, STATS = 5 GO |
如何使用 SSMS 還原文件和文件組
打開 SSMS,轉(zhuǎn)到對象資源管理器,右鍵單擊數(shù)據(jù)庫,然后選擇“還原文件和文件組”選項(xiàng)。
選擇要還原的源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫,然后選擇文件組集。
并選擇恢復(fù)文件和文件組選項(xiàng)
選擇要還原的源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫,然后選擇文件組集。
要恢復(fù)的源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫。
如何使用 T-SQL 恢復(fù)文件和文件組
或者,您可以使用 T-SQL 命令來恢復(fù)數(shù)據(jù)庫文件或文件組。
RESTORE DATABASE [Northwind] FILE = N'Northwind' FROM DISK = N'C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLBackupNorthwind.bak' WITH FILE = 7, NOUNLOAD, STATS = 10 GO |
結(jié)論
在本文中,討論了 SQL Server 中的不同類型的備份以及如何創(chuàng)建這些備份。我們還討論了使用 SSMS 和 T-SQL 命令恢復(fù)數(shù)據(jù)庫備份的方法。如果數(shù)據(jù)庫備份損壞,可以使用第三方工具,從損壞的備份文件 (.bak) 中恢復(fù) SQL 數(shù)據(jù)庫。
常問問題
- 如果 SSMS 更容易,為什么我應(yīng)該使用 T-SQL 來備份和恢復(fù)數(shù)據(jù)庫? T-SQL 通常用于自動(dòng)化該過程。
- 我的機(jī)器應(yīng)該使用什么類型的備份? 這取決于數(shù)據(jù)和數(shù)據(jù)庫的大小。如果您正在處理小型數(shù)據(jù)庫,則可以使用完整備份。但是,如果您的數(shù)據(jù)庫很大,請將完整備份與差異日志和事務(wù)日志結(jié)合起來。
- 如果我的數(shù)據(jù)庫損壞了。我可以使用備份來恢復(fù)數(shù)據(jù)庫嗎? 是的,您可以在這種情況下使用備份。
- 如果備份損壞怎么辦? 如果備份文件損壞,您可以使用 SQL Toolkit for MS SQL。該軟件包含一個(gè)名為 Stellar Backup Extractor for MS SQL 的模塊,可以從損壞的備份 (.bak) 文件中提取數(shù)據(jù)庫。
- 如果 SQL 數(shù)據(jù)庫文件損壞怎么辦? 您可以使用數(shù)據(jù)庫控制臺命令 (DBCC) CHECKDB 來檢查和修復(fù)損壞的數(shù)據(jù)庫。