sqlserver迁移日志文件和数据文件

sqlserver安装后没有指定日志存储路径或者还原库指定的日志存储位置不理想想要更改,都可以按照这种方式来更换;

1.前提准备:数据库的备份bak文件

2.查看自己当前数据库的日志文件和数据文件存储路径是否理想

选中当前数据库,右键属性-文件(这是我已经更改好了的位置,正常应该是位于C盘目录下)

3.找到自己的备份bak文件路径,执行查询命令

复制代码
RESTORE FILELISTONLY
FROM DISK = 'D:\yunshu\databak\WithinHospReview_backup_2025_07_14_150853_7181956.bak'

输出如下:

4:执行数据替换和迁移命令;(该命令是执行数据库还原命令,同时把这个备份库中的日志文件和数据文件迁移到我们的目标路径文件)

复制代码
RESTORE DATABASE WithinHospReview
FROM DISK = 'D:\yunshu\databak\WithinHospReview_backup_2025_07_14_141827_2041194.bak'
WITH MOVE 'WithinHospReview' TO 'D:\yunshu\SQLData\WithinHospReview.mdf',
     MOVE 'WithinHospReview_log' TO 'D:\yunshu\SQLLogs\WithinHospReview_log.ldf',
     REPLACE;

WithinHospReview是我的数据库名字,D:\yunshu\databak\WithinHospReview_backup_2025_07_14_141827_2041194.bak是我都数据库备份bak文件路径;WithinHospReview_log和WithinHospReview名字就是对应我执行步骤三所查询出来的名字,一定要对应哦,D:\yunshu\SQLData\WithinHospReview.mdf和'D:\yunshu\SQLLogs\WithinHospReview_log.ldf'就是我要的目标路径了,新的日志文件和数据会存储到这个新文件中;

附:

如果当前数据库在使用中,执行步骤4会报错:

复制代码
执行时报错:消息 3102,级别 16,状态 1,第 10 行
RESTORE 无法处理数据库 'WithinHospReview',因为它正由此会话使用。建议在执行此操作时使用 master 数据库。
消息 3013,级别 16,状态 1,第 10 行
RESTORE DATABASE 正在异常终止。

可以依次执行

复制代码
//切换到master数据库
USE master;

//把目标数据库切换到单用户模式,强制断开其他连接
ALTER DATABASE WithinHospReview SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
//执行还原语句
RESTORE DATABASE WithinHospReview
FROM DISK = 'D:\yunshu\databak\WithinHospReview_backup_2025_07_14_141827_2041194.bak'
WITH MOVE 'WithinHospReview' TO 'D:\yunshu\SQLData\WithinHospReview.mdf',
     MOVE 'WithinHospReview_log' TO 'D:\yunshu\SQLLogs\WithinHospReview_log.ldf',
     REPLACE;
//还原完成后,切换回多用户模式
 ALTER DATABASE WithinHospReview SET MULTI_USER;

5.检查还原后的日志文件和数据文件位置

相关推荐
阿里小阿希1 小时前
Vue3 + Element Plus 项目中日期时间处理的最佳实践与数据库设计规范
数据库·设计规范
白鹭2 小时前
MySQL源码部署(rhel7)
数据库·mysql
666和7772 小时前
Struts2 工作总结
java·数据库
还听珊瑚海吗2 小时前
SpringMVC(一)
数据库
星期天要睡觉4 小时前
MySQL 综合练习
数据库·mysql
Y4090014 小时前
数据库基础知识——聚合函数、分组查询
android·数据库
JosieBook5 小时前
【数据库】MySQL 数据库创建存储过程及使用场景详解
数据库·mysql
处女座_三月5 小时前
改 TDengine 数据库的时间写入限制
数据库·sql·mysql