首页 > 数据库 >SQL Server 中用于备份数据库的 BACKUP 命令提供了多种选项和灵活性,主要包括以下几种:SQL Server 中的 RESTORE 命令用于恢复备份的数据库或数据库日志文件。根据不同的恢

SQL Server 中用于备份数据库的 BACKUP 命令提供了多种选项和灵活性,主要包括以下几种:SQL Server 中的 RESTORE 命令用于恢复备份的数据库或数据库日志文件。根据不同的恢

时间:2024-07-05 11:52:54浏览次数:18  
标签:RESTORE 恢复 数据库 命令 DatabaseName disk AdventureWorks 备份

SQL Server 中用于备份数据库的 BACKUP 命令提供了多种选项和灵活性,主要包括以下几种:

1. 完整备份(FULL)

完整备份将整个数据库备份到指定的备份介质(如磁盘或磁带)。语法如下:

sqlCopy Code
BACKUP DATABASE database_name TO disk = 'backup_device_path' [,...n]
  • database_name:要备份的数据库名称。
  • disk:备份文件的路径和名称。

示例:

sqlCopy Code
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_full.bak'

2. 差异备份(DIFFERENTIAL)

差异备份仅备份自上次完整备份或差异备份以来发生更改的部分数据。语法如下:

sqlCopy Code
BACKUP DATABASE database_name TO disk = 'backup_device_path' WITH DIFFERENTIAL
  • WITH DIFFERENTIAL:指定差异备份选项。

示例:

sqlCopy Code
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_diff.bak' WITH DIFFERENTIAL

3. 日志备份(LOG)

日志备份将数据库的事务日志备份到指定的备份介质。适用于实现点恢复或完整恢复模型的数据库。语法如下:

sqlCopy Code
BACKUP LOG database_name TO disk = 'backup_device_path'

示例:

sqlCopy Code
BACKUP LOG AdventureWorks TO disk = 'C:\Backup\AdventureWorks_log.trn'

4. 文件或文件组备份(FILE 或 FILEGROUP)

文件或文件组备份允许备份数据库的部分文件或文件组。语法如下:

sqlCopy Code
BACKUP DATABASE database_name FILE = 'logical_file_name' TO disk = 'backup_device_path'

或者备份文件组:

sqlCopy Code
BACKUP DATABASE database_name FILEGROUP = 'filegroup_name' TO disk = 'backup_device_path'

示例:

sqlCopy Code
BACKUP DATABASE AdventureWorks FILE = 'AdventureWorks_Data' TO disk = 'C:\Backup\AdventureWorks_Data.bak'

BACKUP DATABASE AdventureWorks FILEGROUP = 'PRIMARY' TO disk = 'C:\Backup\AdventureWorks_Primary.bak'

5. 部分备份选项

备份命令还支持一些其他选项,如备份选项、初始化选项、镜像选项和压缩选项,以优化备份过程或降低备份文件的大小。

这些命令和选项使得 SQL Server 提供了灵活和多样化的备份策略,可以根据实际需求选择适合的备份类型和参数。


6. 备份选项

备份命令中可以使用一些选项来进一步控制备份的行为和性能。

  • WITH INIT:初始化备份介质,覆盖现有备份集。
  • WITH FORMAT:使用新的媒体格式写入备份集。
  • WITH COPY_ONLY:在不中断现有备份链的情况下进行备份。
  • WITH COMPRESSION:使用压缩备份,减少备份文件大小。

示例:

sqlCopy Code
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_full.bak' WITH INIT, FORMAT, COMPRESSION

7. 备份集名称和描述

可以为备份集指定名称和描述,用于管理和记录备份历史。

sqlCopy Code
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_full.bak'
WITH INIT, NAME = 'AdventureWorks-Full Database Backup', DESCRIPTION = 'Full backup of AdventureWorks database'

8. 备份到多个备份设备

可以将备份同时写入多个备份设备,以提高备份的冗余性和性能。

sqlCopy Code
BACKUP DATABASE AdventureWorks 
TO disk = 'C:\Backup\AdventureWorks_full1.bak',
   disk = 'D:\Backup\AdventureWorks_full2.bak'
WITH INIT

9. 备份验证

备份完成后,可以使用 WITH CHECKSUM 选项验证备份的完整性。

sqlCopy Code
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_full.bak' WITH CHECKSUM

10. 文件和文件组相关选项

针对文件和文件组备份,可以使用更具体的选项来控制备份的细节,如备份文件的物理名称、位置等。

sqlCopy Code
BACKUP DATABASE AdventureWorks FILE = 'AdventureWorks_Data' TO disk = 'C:\Backup\AdventureWorks_Data.bak'

总结

SQL Server 的 BACKUP 命令提供了丰富的选项和灵活性,允许根据数据库的需求和备份策略选择适当的备份类型和参数。备份是数据库管理中至关重要的一部分,能够确保数据安全性和可恢复性,建议根据具体的场景和需求来配置备份任务。


11. 备份和恢复的一般流程

备份和恢复是数据库管理中不可或缺的重要任务。以下是一般的备份和恢复流程:

备份流程:

  1. 确定备份类型:根据需求选择完整备份、差异备份或日志备份。

  2. 选择备份设备:确定备份文件存储的位置和名称。

  3. 配置备份选项:根据需要设置初始化、格式化、压缩、验证等选项。

  4. 执行备份命令:使用 BACKUP DATABASEBACKUP LOG 命令执行备份操作。

  5. 记录备份信息:记录备份集的名称、描述等信息,便于管理和恢复。

示例:

sqlCopy Code
-- 完整备份
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_full.bak' WITH INIT, FORMAT, COMPRESSION

-- 差异备份
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_diff.bak' WITH DIFFERENTIAL

-- 日志备份
BACKUP LOG AdventureWorks TO disk = 'C:\Backup\AdventureWorks_log.trn' 

-- 备份验证
BACKUP DATABASE AdventureWorks TO disk = 'C:\Backup\AdventureWorks_full.bak' WITH CHECKSUM

恢复流程:

  1. 准备恢复设备:确保备份文件可用并处于适当的位置。

  2. 选择恢复方式:根据需要选择完整恢复、差异恢复或点恢复。

  3. 恢复数据库:使用 RESTORE DATABASE 命令执行恢复操作。

  4. 确认恢复状态:验证数据库恢复的完整性和正确性。

示例:

sqlCopy Code
-- 完整恢复
RESTORE DATABASE AdventureWorks FROM disk = 'C:\Backup\AdventureWorks_full.bak' WITH REPLACE, RECOVERY

-- 差异恢复
RESTORE DATABASE AdventureWorks FROM disk = 'C:\Backup\AdventureWorks_full.bak' WITH NORECOVERY
RESTORE DATABASE AdventureWorks FROM disk = 'C:\Backup\AdventureWorks_diff.bak' WITH RECOVERY

-- 点恢复
RESTORE DATABASE AdventureWorks FROM disk = 'C:\Backup\AdventureWorks_full.bak' WITH NORECOVERY
RESTORE LOG AdventureWorks FROM disk = 'C:\Backup\AdventureWorks_log.trn' WITH RECOVERY

总结

备份和恢复是数据库管理中关键的操作,通过合理的备份策略和恢复方案,可以保障数据的安全性和可用性。在执行备份和恢复操作时,务必确保理解各种选项的含义和使用方式,以便根据实际需求进行配置和管理。


12. 备份和恢复策略

实施有效的备份和恢复策略对于确保数据库的可用性和数据安全至关重要。以下是一些常见的备份和恢复策略建议:

完整备份和差异备份结合:

  • 完整备份:定期执行完整备份,通常是每周一次或每天一次,以确保数据库的完整副本。

  • 差异备份:在完整备份之后执行差异备份,只备份自上次完整备份以来发生更改的数据。这样可以减少备份时间和备份文件的大小。

日志备份:

  • 对于需要恢复到某个特定时间点的需求,可以设置定期的日志备份。日志备份可以帮助恢复到故障发生前的准确状态。

自动化备份计划:

  • 使用数据库管理工具或脚本设置自动化的备份计划。确保备份任务按计划执行,并且备份文件存储在安全的位置。

备份验证:

  • 定期验证备份的完整性和可用性,确保备份文件没有损坏并可以成功恢复。

存储备份文件的位置:

  • 将备份文件存储在不同于数据库服务器的位置,以防止服务器硬件故障或其他灾难性事件导致备份文件损坏。

保留备份历史记录:

  • 记录备份集的详细信息,包括备份时间、类型、位置以及备份恢复的相关操作。这些记录有助于监控和管理备份策略的有效性。

灾难恢复计划:

  • 制定和测试灾难恢复计划,包括从备份中恢复数据的步骤和时间表,以应对更严重的数据丢失情况。

最佳实践:

  • 持续评估和优化备份和恢复策略,确保其与数据库增长和业务需求的变化保持一致。

  • 培训和意识数据库管理员和相关人员,确保他们理解和能够执行有效的备份和恢复操作。

通过采取综合的备份和恢复策略,可以最大程度地降低数据丢失和系统停机时间的风险,确保数据库系统的持续可靠性和业务连续性。


SQL Server 中的 RESTORE 命令用于恢复备份的数据库或数据库日志文件。根据不同的恢复需求,RESTORE 命令可以有多种选项和参数组合。以下是常见的 RESTORE 命令及其用法:

1. 完整数据库恢复

用于从完整数据库备份文件中恢复数据库。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH REPLACE, RECOVERY;
  • DatabaseName:要恢复的数据库名称。
  • disk = 'backup_path':指定备份文件的路径。
  • WITH REPLACE:替换现有数据库(如果存在)。
  • WITH RECOVERY:将数据库恢复到可用状态。

2. 差异备份的数据库恢复

结合完整备份和差异备份文件来恢复数据库。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH NORECOVERY;

RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_diff.bak'
WITH RECOVERY;
  • 首先执行完整备份文件的恢复,使用 WITH NORECOVERY 选项。
  • 然后执行差异备份文件的恢复,使用 WITH RECOVERY 选项,将数据库恢复到可用状态。

3. 日志备份的数据库恢复

用于从数据库事务日志备份文件中进行恢复,通常用于点恢复到特定时间点或事务。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH NORECOVERY;

RESTORE LOG DatabaseName
FROM disk = 'C:\Backup\DatabaseName_log1.trn'
WITH RECOVERY;
  • 先执行完整备份文件的恢复,使用 WITH NORECOVERY 选项。
  • 然后执行一个或多个日志备份文件的恢复,最后一个备份文件使用 WITH RECOVERY 选项。

4. 文件和文件组恢复

用于恢复指定的数据库文件或文件组。

sqlCopy Code
RESTORE DATABASE DatabaseName
FILE = 'logical_file_name'
FROM disk = 'C:\Backup\DatabaseName_partial.bak'
WITH RECOVERY;
  • FILE = 'logical_file_name':指定要恢复的数据库文件或文件组的逻辑名称。

5. 部分数据库恢复

用于从部分数据库备份文件中恢复指定的文件或文件组。

sqlCopy Code
RESTORE DATABASE DatabaseName
FILEGROUP = 'filegroup_name'
FROM disk = 'C:\Backup\DatabaseName_partial.bak'
WITH RECOVERY;
  • FILEGROUP = 'filegroup_name':指定要恢复的文件组名称。

6. 使用加密密钥进行恢复

用于从加密的备份文件中进行恢复。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH REPLACE, RECOVERY, 
     KEY = 'encryption_key_name';
  • KEY = 'encryption_key_name':指定用于解密备份文件的加密密钥名称。

7. 文件恢复到不同的数据库名称

用于将备份文件中的数据库文件恢复到不同的数据库名称。

sqlCopy Code
RESTORE DATABASE NewDatabaseName
FROM disk = 'C:\Backup\OldDatabaseName_full.bak'
WITH REPLACE, RECOVERY;
  • NewDatabaseName:指定新的数据库名称。

这些是 RESTORE 命令的一些常见用法示例。根据具体情况和需求,可以结合不同的选项和参数来执行不同类型的数据库恢复操作。


8. 数据库文件移动和重命名

用于在恢复数据库时将数据库文件移动到新的位置并重命名。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH MOVE 'logical_data_file_name' TO 'new_file_path\new_data_file_name.mdf',
     MOVE 'logical_log_file_name' TO 'new_log_path\new_log_file_name.ldf',
     REPLACE, RECOVERY;
  • MOVE 'logical_data_file_name' TO 'new_file_path\new_data_file_name.mdf':指定数据文件的新路径和名称。
  • MOVE 'logical_log_file_name' TO 'new_log_path\new_log_file_name.ldf':指定日志文件的新路径和名称。

9. 恢复到特定时间点或事务

用于将数据库恢复到特定时间点或事务的状态。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH NORECOVERY;

RESTORE LOG DatabaseName
FROM disk = 'C:\Backup\DatabaseName_log1.trn'
WITH STOPAT = '2024-07-01 12:00:00', RECOVERY;
  • WITH STOPAT = '2024-07-01 12:00:00':指定恢复到的时间点。

10. 校验备份文件

用于校验备份文件是否有效。

sqlCopy Code
RESTORE VERIFYONLY
FROM disk = 'C:\Backup\DatabaseName_full.bak';
  • RESTORE VERIFYONLY:用于验证备份文件的语句,不执行实际的恢复操作。

这些示例覆盖了常见的 RESTORE 命令用法,涵盖了从完整备份、差异备份、日志备份以及部分备份的恢复操作,以及其他一些高级选项如加密恢复、文件移动和重命名等。根据具体的数据库恢复需求和场景,可以灵活组合和调整这些选项和参数。


11. 恢复到最新的完整备份和差异备份

如果数据库使用了完整备份和差异备份策略,可以按以下方式恢复到最新的备份点。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH NORECOVERY;

RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_diff.bak'
WITH RECOVERY;
  • DatabaseName_full.bak 是最新的完整备份文件。
  • DatabaseName_diff.bak 是最新的差异备份文件。

这样的恢复过程会将数据库恢复到最新的差异备份完成的状态。

12. 带有备份镜像选项的恢复

可以指定备份镜像的选项来恢复数据库。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH MIRROROPTION = ON, REPLACE, RECOVERY;
  • WITH MIRROROPTION = ON:指定使用备份镜像的选项。

13. 恢复到最新的日志备份

用于将数据库恢复到最新的日志备份点。

sqlCopy Code
RESTORE LOG DatabaseName
FROM disk = 'C:\Backup\DatabaseName_log2.trn'
WITH RECOVERY;

这条语句将数据库恢复到 DatabaseName_log2.trn 日志备份文件中包含的最新事务的状态。

14. 部分恢复到数据库

如果需要仅恢复数据库的部分文件组或部分文件,可以使用以下命令。

sqlCopy Code
RESTORE DATABASE DatabaseName
FILEGROUP = 'filegroup_name'
FROM disk = 'C:\Backup\DatabaseName_partial.bak'
WITH RECOVERY;

这将恢复指定文件组的数据库文件,并将数据库恢复到可用状态。

这些命令和选项涵盖了 SQL Server 中 RESTORE 命令的主要用法。根据具体的备份策略和恢复需求,可以选择适当的选项和参数来执行数据库的恢复操作。


15. 使用密码解密备份文件

如果备份文件被加密了,可以使用以下命令来解密并恢复数据库。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full_encrypted.bak'
WITH PASSWORD = 'backup_password', REPLACE, RECOVERY;
  • WITH PASSWORD = 'backup_password':指定备份文件的解密密码。

16. 恢复到新的数据库

可以将数据库备份恢复到一个新的数据库中。

sqlCopy Code
RESTORE DATABASE NewDatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH MOVE 'logical_data_file_name' TO 'new_file_path\new_data_file_name.mdf',
     MOVE 'logical_log_file_name' TO 'new_log_path\new_log_file_name.ldf',
     REPLACE, RECOVERY;

这样做会将原始数据库的备份恢复到一个全新的数据库 NewDatabaseName 中,可以同时指定新的数据文件和日志文件的路径和名称。

17. 恢复到无日志状态

如果需要在恢复期间禁用事务日志记录,可以使用 NORECOVERY 选项。

sqlCopy Code
RESTORE DATABASE DatabaseName
FROM disk = 'C:\Backup\DatabaseName_full.bak'
WITH NORECOVERY;

此时数据库将处于恢复状态,可以接着执行额外的日志备份或者差异备份操作。

18. 部分恢复到特定的文件

如果需要仅恢复某个特定的数据库文件,可以通过 PARTIALFILE 选项指定。

sqlCopy Code
RESTORE DATABASE DatabaseName
FILE = 'logical_file_name'
FROM disk = 'C:\Backup\DatabaseName_partial.bak'
WITH RECOVERY;

这将只恢复指定的数据库文件,而不是整个数据库。

这些示例覆盖了 RESTORE 命令的多种用法和选项,能够满足不同的恢复需求和场景。根据具体的情况选择适当的命令和参数进行数据库恢复操作。


 

标签:RESTORE,恢复,数据库,命令,DatabaseName,disk,AdventureWorks,备份
From: https://www.cnblogs.com/suv789/p/18285540

相关文章

  • SQL Server 中的 DBCC(Database Console Commands)命令提供了一系列用于数据库管理和诊
    SQLServer中的DBCC(DatabaseConsoleCommands)命令提供了一系列用于数据库管理和诊断的工具和功能。以下是一些常用的DBCC命令及其功能:DBCCCHECKDB:用于检查整个数据库的物理和逻辑一致性。sqlCopyCodeDBCCCHECKDB('MyDatabase');DBCCCHECKTABLE:检查指定表......
  • mysql数据库安装
    mysql数据库安装1.从官网下载yum包直接使用wget下载yum包wgethttp://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm​​2.安装软件源rpm-Uvhmysql57-community-release-el7-10.noarch.rpm​​3.安装Mysql服务端yuminstall-ymysql-communi......
  • abp 接入国产达梦8数据库
    1.修改数据库连接"Default":"server=host;port=5236;userid=ABP;password=1q2w3E*;database=ABP",建议用户名和数据库一样,后期便于处理2,添加达梦的ef库,sdk<PackageReferenceInclude="DM.Microsoft.EntityFrameworkCore"Version="3.1.0.20604&qu......
  • Oracle数据库的日志切换策略
    Oracle数据库的日志切换策略是确保数据库稳定运行和事务连续性的关键机制之一。以下是对Oracle日志切换策略的详细解析1、自动日志切换1.1、重做日志切换:Oracle数据库使用重做日志文件(RedoLogFiles)来保证实例恢复。当当前的重做日志文件写满时,Oracle会自动进行日志切换......
  • Oracle数据库中RETURNING子句
    RETURNING子句允许您检索插入、删除或更新所修改的列(以及基于列的表达式)的值。如果不使用RETURNING,则必须在DML语句完成后运行SELECT语句,才能获得更改列的值。因此,RETURNING有助于避免再次往返数据库,即PL/SQL块中的另一个上下文切换。RETURNING子句可以返回多行数据,在这种......
  • SQL Server 提供了多个命令行工具,用于执行管理任务、数据操作、脚本执行等。以下是几
    SQLServer提供了多个命令行工具,用于执行管理任务、数据操作、脚本执行等。以下是几个主要的命令行工具:sqlcmd:这是最常用的SQLServer命令行工具,用于执行Transact-SQL脚本、查询以及批处理操作。它通过命令行界面与SQLServer交互,支持脚本文件的读取和执行,结果可以输出到文......
  • Microsoft SQL Server 2012 中常用的 Transact-SQL 命令示例,涵盖了数据库管理和查询操
    MicrosoftSQLServer2012中常用的Transact-SQL命令示例,涵盖了数据库管理和查询操作:创建数据库sqlCopyCodeCREATEDATABASEYourDatabaseName;删除数据库sqlCopyCodeDROPDATABASEYourDatabaseName;创建表sqlCopyCodeCREATETABLEEmployees(EmployeeIDIN......
  • 创建数据库时排序规则utf8_general_ci与utf8_bin的区别
    在MySQL数据库中,字符集(如utf8)定义了字符如何存储,而排序规则(Collation)则定义了字符如何比较、排序和区分大小写。utf8_general_ci和utf8_bin是两种常用的UTF-8字符集下的排序规则,它们之间的主要区别如下:utf8_general_ci全称:case-insensitive,意为“不区分大小写”。特点:在比较......
  • 在 Microsoft SQL Server 2012 中,可以使用 sqlcmd 命令行工具来执行 Transact-SQL 脚
    sqlcmd实用工具-SQLServer|MicrosoftLearn在MicrosoftSQLServer2012中,可以使用sqlcmd命令行工具来执行Transact-SQL脚本和命令。这个工具提供了一种在命令行下管理和操作SQLServer的便捷方式。以下是一些sqlcmd命令的实例用法:连接到SQLServer实例bashC......
  • 常见Linux命令
    1、查看目录:ls常用用法:ls-l:以列表的形式展示;简写ll效果展示:2、终端清屏:clear常用用法:ctr+L:清空屏幕当前的内容,不会重置终端效果展示:使用前使用后3、切换目录:cd常用用法:cd/:切换到根目录cd/xx(目录名):切换到根目录下的xx目录cd..:切换到上一级目录c......