分离附加数据库怎么操作
SQL Server 分离(detach)与附加(attach)数据库的完整操作:SSMS 向导与 T-SQL 两条路,各自适用场景与文件校验要点。
结论先行
分离 = 把数据库从引擎注销但文件留在原地;附加 = 引擎读这些文件重建库定义。两者搭配是「物理搬文件、跨机迁移小库」的标准手法。SSMS(SSMS 管理工具条目)里有图形向导,T-SQL 里对应 sp_detach_db 与 CREATE DATABASE ... FOR ATTACH 两条命令。
分离:两条路
| 方式 | 命令/路径 | 特点 |
|---|---|---|
| SSMS 向导 | 右键数据库 → 分离 → 勾选「保留文件」等选项 | 能勾选删除/保留、自动检查依赖 |
| T-SQL | EXEC sp_detach_db N'库名'; |
一行命令,无交互选项 |
分离前数据库必须无活动连接;生产库先
SET SINGLE_USER,否则分离会因连接占用失败。
附加:两条路
-- T-SQL 附加(文件数与实际文件必须一一对应)
CREATE DATABASE Sales ON
(FILENAME = N'D:\data\Sales.mdf')
LOG ON (FILENAME = N'E:\log\Sales_log.ldf');
SSMS 路径:数据库节点 → 右键 → 附加 → 添加文件逐个勾选(.mdf 必须勾,.ndf 勾上,日志可让引擎自动新建)。
什么场景该用分离附加
- 跨机器迁移开发库:停服务 → 拷走文件 → 新机器附加。
- 临时排查:把库从一台机器分离到另一台做诊断。
- 不适合:生产核心库(窗口期 = 库离线;且跨大版本引擎附加会受兼容级别限制)。
生产搬迁请优先用备份/还原,保留分离附加给轻量场景。
常见翻车点
- 分离时忘了勾「保留文件」,文件被删——先备份!
- 附加时少传一个 .ndf 文件:报文件缺失,补齐再试。
- 文件拷到网络慢路径后直接附加:引擎会长时间校验文件,耐心等。
- 跨机器附加后登录、作业、计划任务没跟过来(那些存于 master,不在用户库里)。
SQL Server 2022 Developer 与 SQL Server 2019 Developer 条目环境下操作一致;文件物理路径的确认另见「数据库文件位置怎么迁移」相关条目,SQL Server 产品族条目 中各版本行为通用。