sql server怎么还原数据库

在 SQL Server 中还原数据库可通过两种方式:① 右键实例 → “任务” → “还原” → 选择备份文件;② 执行 RESTORE DATABASE [目标库名] FROM DISK = '备份路径',按需替换参数即可完成还原

以下是针对 SQL Server 数据库还原 的完整操作指南,涵盖多种场景、详细步骤及关键注意事项,帮助您安全高效地完成数据库恢复任务。

sql server怎么还原数据库


前期准备

1 核心要素确认

项目 要求 说明
✅ 备份文件 .bak 格式(默认全量备份) 确保文件未损坏且可访问
✅ 目标服务器 SQL Server 实例运行正常 需具备足够磁盘空间(建议预留原数据库大小的1.5倍)
✅ 权限 sysadmin 固定服务器角色成员 或拥有 CREATE ANY DATABASE + ALTER ANY DATABASE 权限
✅ 兼容性验证 备份集与目标服务器的版本匹配 跨版本还原需额外配置(如SQL Server 2016→2019需启用兼容级别)
✅ 冲突处理策略 明确是否覆盖现有同名数据库 若存在同名库,需提前重命名或删除

2 特殊场景预判

  • 异地还原:若备份来自其他服务器,需确认文件传输完整性(MD5校验)。
  • 加密备份:若备份已加密,需提供证书/密钥进行解密。
  • 只读介质:若备份存储于光盘或U盘,需映射为本地驱动器再操作。

通过 SQL Server Management Studio (SSMS) 还原

1 标准流程(图形化界面)

  1. 启动还原向导

    • 打开 SSMS → 连接到目标实例 → 右键点击 “数据库” → 选择 “还原数据库…”
    • 替代路径:直接定位到 .bak 文件 → 右键 “还原数据库”
  2. 配置基础参数

    • 目标数据库名称:输入新数据库名(若与备份源相同则勾选 “覆盖现有数据库”)。
    • 时间点还原:仅适用于包含日志链的完整备份序列(需勾选 “时间点” 并指定具体时间)。
  3. 关键选项设置(重点!)
    进入 “选项” 标签页,按需调整以下核心参数:

    sql server怎么还原数据库

参数 推荐值 作用说明
✅ 覆盖现有数据库 根据需求勾选 ⚠️ 会永久删除当前数据库及其所有对象
✅ 保留原始文件名 默认勾选 确保数据文件(MDF/NDF)和日志文件(LDF)按备份时的路径生成
✅ 限制访问 取消勾选 允许立即连接新数据库
✅ 回滚未提交的事务 根据业务需求选择 生产环境建议勾选以保持一致性状态
✅ 关闭目标数据库期间… 默认勾选 强制终止用户连接,确保还原过程顺利
  1. 执行还原
    点击 “确定” → 监控进度条 → 完成后刷新数据库列表验证结果。

2 高级场景示例

案例:修改数据文件存放路径
当目标磁盘空间不足时,可通过以下步骤调整:

  1. 在 “还原数据库” 窗口展开 “文件” 标签页。
  2. 修改 逻辑名称 对应的 物理位置 列(如将 D:DataMyDB.mdf 改为 E:NewDataMyDB.mdf)。
  3. 确保新路径已创建且权限开放给 SQL Server 服务账户。

通过 T-SQL 命令还原

1 基础语法

RESTORE DATABASE [目标数据库名]
FROM DISK = N'C:BackupAdventureWorks.bak'
WITH REPLACE, -覆盖现有数据库
    MOVE 'AdventureWorks' TO 'D:DataAdventureWorks_Restore.mdf', -数据文件新路径
    MOVE 'AdventureWorks_log' TO 'E:LogsAdventureWorks_Restore.ldf', -日志文件新路径
    RECOVERY; -结束点标记(非日志链场景必选)

2 关键参数解析

参数 说明 示例
REPLACE 允许覆盖现有数据库 WITH REPLACE
MOVE 重定向文件到新位置 MOVE '逻辑名' TO '物理路径'
NORECOVERY 暂停恢复(用于后续追加事务日志) WITH NORECOVERY
STOPAT = '时间' 精确时间点还原(需完整日志链支持) STOPAT = '2023-10-01T14:30:00'
STATS = 10 每10%进度打印状态信息 STATS = 10

3 典型错误及修复

  • 错误3154:”无法打开备份设备”
    → 检查文件路径是否正确,确认SQL Server服务账户对文件有读取权限。
  • 错误3013:”备份集中找不到媒体族”
    → 备份文件损坏,尝试重新备份或使用 RESTORE LABELONLY 验证备份头信息。
  • 错误3117:”独占访问权被拒绝”
    → 使用 WITH REPLACE 前未设置单用户模式,可先执行 ALTER DATABASE [DB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

关键注意事项

1 风险控制清单

风险项 防范措施
❌ 误删生产库 ✅ 还原前备份目标数据库(BACKUP DB [现有库] TO DISK...
❌ 文件权限不足 ✅ 确保SQL Server服务账户对目标路径有读写权限
❌ 瞬时中断导致不一致 ✅ 复杂恢复后立即执行完整性检查(DBCC CHECKDB
❌ 版本降级 ✅ 高版本→低版本需先生成脚本(GENERATE SCRIPT)并手动修改兼容性设置

2 性能优化建议

  • 并行还原:添加 MAXTRANSACTSIZE=65536 提升大事务处理速度。
  • 压缩备份优先:若使用压缩备份(WITH COMPRESSION),还原速度可提升30%-50%。
  • 临时表空间:大型数据库还原时,临时增加 tempdb 大小至原数据库的2倍。

相关问答FAQs

Q1: 如何查看数据库当前的恢复模式?

A: 执行以下查询:

SELECT name, recovery_model_desc, page_verify_option_desc, is_auto_close_on, is_read_committed_snapshot_on, is_availability_db, is_in_standby, is_contained, service_broker_guid, compatibility_level, collation_name, create_date, modify_date, state_desc, owner_sid, primary_file_path, log_file_path, source_database_id, source_server_name, source_timestamp, source_change_tracking_enabled, source_is_published, source_publish_database_guid, source_subscriber_database_guid, source_subscription_type_desc, source_synchronization_state_desc, source_last_sync_time, source_initial_lsn, source_final_lsn, source_start_lsn, source_commit_lsn, source_hardened_lsn, source_current_lsn, source_next_lsn, source_min_active_lsn, source_max_active_lsn, source_fork_point_lsn, source_fork_time, source_branch_id, source_machine_name, source_instance_name, source_db_guid, source_db_generation, source_db_version, source_db_compatibility_level, source_db_collation, source_db_owner, source_db_create_date, source_db_modify_date, source_db_size, source_db_space_used, source_db_max_size, source_db_growth, source_db_growth_increment, source_db_growth_type, source_db_status, source_db_updateability, source_db_user_access, source_db_recovery_model, source_db_page_verify, source_db_torn_page_detection, source_db_is_auto_shrink, source_db_is_auto_close, source_db_is_read_committed_snapshot, source_db_is_availability_db, source_db_is_in_standby, source_db_is_contained, source_db_service_broker, source_db_collation, source_db_timezone, source_db_compare_window, source_db_compare_offset, source_db_compare_interval, source_db_compare_next_run_date, source_db_compare_last_run_date, source_db_compare_last_result, source_db_compare_failure_count, source_db_compare_successful_count, source_db_compare_total_count, source_db_compare_percentage_complete, source_db_compare_estimated_completion_time, source_db_compare_actual_completion_time, source_db_compare_last_error_number, source_db_compare_last_error_message, source_db_compare_last_error_severity, source_db_compare_last_error_state, source_db_compare_last_error_procedure, source_db_compare_last_error_line, source_db_compare_last_error_column, source_db_compare_last_error_parameter, source_db_compare_last_error_variable, source_db_compare_last_error_constraint, source_db_compare_last_error_trigger, source_db_compare_last_error_plan, source_db_compare_last_error_query, source_db_compare_last_error_object, source_db_compare_last_error_schema, source_db_compare_last_error_catalog, source_db_compare_last_error_database, source_db_compare_last_error_server, source_db_compare_last_error_instance, source_db_compare_last_error_port, source_db_compare_last_error_client_ip, source_db_compare_last_error_client_netbios, source_db_compare_last_error_client_mac, source_db_compare_last_error_client_hostname, source_db_compare_last_error_client_domain, source_db_compare_last_error_client_username, source_db_compare_last_error_client_processid, source_db_compare_last_error_client_threadid, source_db_compare_last_error_client_application, source_db常规恢复模式为 SIMPLE/BUFLOO/FULL,`;

简化版常用命令:

sql server怎么还原数据库

SELECT name, recovery_model_desc FROM sys.databases WHERE name = 'YourDatabaseName';

Q2: 如果还原失败提示 “媒体集有X个媒体簇,但只提供了Y个”怎么办?

A: 此错误表明备份集不完整,常见原因及解决方案:

  1. 缺失备份文件:检查备份路径下所有分卷文件(如 .bak, .bak.001, .bak.002)是否齐全。
  2. 顺序错误:确保按备份时的顺序加载分卷文件。
  3. 损坏的备份集:尝试用 RESTORE VERIFYONLY FROM DISK='...' 验证备份完整性,必要时重新备份。
  4. 跨服务器还原:若备份来自另一台服务器,需确认备份集包含所有必需的媒体簇。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/95600.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年8月7日 06:04
下一篇 2025年7月18日 02:59

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN