数据库文件位置怎么迁移
SQL Server 数据库 .mdf/.ndf 文件迁移到新卷的标准步骤:改物理路径 + 分离附加,以及日志文件收缩的注意点。
结论先行
官方支持的文件迁移路线只有一条:分离 → 挪文件 → 附加(ATTACH),不需要重建数据库。迁移前先查清每个文件当前的物理路径,目标是把数据文件与日志文件规划到 I/O 独立的卷上。
查清现状(迁移前必做)
-- 当前各文件逻辑名、物理路径、大小
SELECT name, physical_name, size/128.0 AS mb
FROM sys.master_files
WHERE database_id = DB_ID(N'Sales');
分离—移动—附加三步走
- 确保无连接:
ALTER DATABASE Sales SET SINGLE_USER WITH ROLLBACK IMMEDIATE; - 分离(不删数据文件)。在 SSMS 管理工具条目 中右键数据库 → 分离,勾选保留文件;或执行:
USE master;
EXEC sp_detach_db N'Sales'; -- 仅登记分离,不删除 .mdf/.ndf/.ldf
- 把
.mdf、.ndf、.ldf物理拷到新卷(可跨卷复制)。 - 附加回来,指定新路径:
CREATE DATABASE Sales ON
(FILENAME = N'D:\data\Sales.mdf'),
(FILENAME = N'D:\data\Sales_ndf1.ndf')
LOG ON (FILENAME = N'E:\log\Sales_log.ldf');
附加时文件数必须与备份时一致,少一个直接报错;文件损坏会在附加时暴露。
容易翻车的点
- 日志文件不能跨卷拆分:一个
.ldf只能整体放一个卷。 - 大库挪文件耗时长(物理拷贝),避开业务高峰。
- 分离后忘了附加直接关机,数据文件裸露在共享目录——有明文数据泄露风险。
- 迁移完做整库备份,旧位置的文件确认无误后再删。
SQL Server 2022 Developer 条目环境下分离附加操作完整可用;分离附加的具体向导路径另见「分离附加数据库怎么操作」相关条目,SQL Server 产品族条目 中各引擎行为一致。