在SQL Server中,数据库可以存储在不同的文件和文件组中。如果您的数据库较小(100 MB 或更少),则无需过多担心文件和文件组。但如果您有一个大型数据库(数 GB 或 TB),将数据分离到不同的文件中可以帮助您优化性能。您可以将数据文件存储在不同的磁盘中。这也将有助于更快地备份和恢复信息,因为您不需要恢复整个数据库,而只需恢复所选的文件或文件组。
在 SQL Server 中,有不同类型的备份:
您的数据库可能会由于多种原因而损坏。备份将帮助您恢复在发生灾难和问题(如硬件故障、病毒攻击或其他问题)时丢失的数据库。
您可以使用 SQL Server Management Studio (SSMS) 创建完整备份来还原 SQL Server 中的数据库。为此,请打开 SSMS,右键单击数据库,然后选择任务 > 备份。
从 SSMS 选择完整备份
在“备份数据库”窗口中,选择“完整备份类型”。
备份数据库窗口
如果您想自动备份,可以使用T-SQL代码。T-SQL 是用于自动执行 SQL Server 任务的 SQL Server 语言。
以下示例显示如何使用 T-SQL 创建完整备份。
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 中创建备份,然后选择“脚本”>“为作业编写脚本操作”选项。
图片
在 SSMS 中创建备份并将操作脚本写入作业选项。
在新作业中,转到“计划”页面并按“新建”按钮创建新计划。
您可以安排作业每天、每小时等运行。
首先,确保您已经有完整备份。
接下来,右键单击数据库并选择任务 > 备份。
在备份类型中,确保选择差异备份类型。
选择备份类型差异
或者,您可以使用 T-SQL 命令创建差异备份。
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 中,右键单击数据库并选择任务 > 备份。
选择文件和文件组选项。
选择要备份的文件和文件组,然后按“确定”。
或者,可以使用 T-SQL 命令创建文件或文件组备份。
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 恢复备份,请转到对象资源管理器,右键单击数据库,然后选择恢复数据库选项。
使用 SSMS 恢复备份
在“还原数据库”窗口中,选择要还原的数据库和备份集,然后按“确定”。
或者,可以使用 T-SQL 命令来恢复数据库。
USE [master] RESTORE DATABASE [AdventureWorks2019] FROM DISK = N'C:backupsAdventureWorks2019.bak' WITH FILE = 10, NOUNLOAD, STATS = 5 GO |
要使用 SSMS 恢复数据库,请转到对象资源管理器,右键单击数据库,然后选择“恢复数据库”选项。
在“还原数据库”窗口中,选择要还原的数据库,选择完整备份,然后选择要还原的差异集,然后按“确定”。
选择完整备份
或者,您可以使用 T-SQL 命令来恢复差异备份。
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,转到对象资源管理器,右键单击数据库,然后选择“还原文件和文件组”选项。
选择要还原的源数据库和目标数据库,然后选择文件组集。
并选择恢复文件和文件组选项
选择要还原的源数据库和目标数据库,然后选择文件组集。
要恢复的源数据库和目标数据库。
或者,您可以使用 T-SQL 命令来恢复数据库文件或文件组。
RESTORE DATABASE [Northwind] FILE = N'Northwind' FROM DISK = N'C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLBackupNorthwind.bak' WITH FILE = 7, NOUNLOAD, STATS = 10 GO |
在本文中,讨论了 SQL Server 中的不同类型的备份以及如何创建这些备份。我们还讨论了使用 SSMS 和 T-SQL 命令恢复数据库备份的方法。如果数据库备份损坏,可以使用第三方工具,从损坏的备份文件 (.bak) 中恢复 SQL 数据库。