数据库附加,至少需要一个文件?
解决方案
用语句附加
sp_attach_db '数据库名','数据库全路径.mdf','数据库日志全路径.ldf'--注意后缀文件名
坑点
突然发现一个数据库的名称是拼错的,要是被别人发现了岂不是...于是我们开始重命名操作
- 修改逻辑名称(执行语句)
- 分离数据库(界面操作)
- 重命名物理文件名称
- 附加数据库(界面操作)
第4步的时候出现"至少需要一个文件"错误。
老版的一体化MSSQL上诉操作是没问题的,出现问题的环境是MSSQL2016+SSMS。
mdf文件重命名后SSMS的界面附加操作应该存在BUG。
补充知识
1. 常规复制数据库方式
方式 | 特点 |
---|---|
备份/还原 | 克隆出备份文件;日常备份(表分区可只备份当前表) |
分离/附加 | 直接操作物理文件(改名字);需要停止服务 |
脚本 | 兼容性好;大小受限 |
2. 修改数据库的逻辑名称
-
查询逻辑名称
SELECT FILE_NAME(1), FILE_NAME(2)
结果如下:
-
修改逻辑名称,如把上述名称改为“AAATest2”。
ALTER DATABASE AAATest MODIFY FILE ( NAME = AAATest, NEWNAME = AAATest2 ) ALTER DATABASE AAATest2 MODIFY FILE ( NAME = AAATest_log, NEWNAME = AAATest2_log )
3. 还原数据库同时修改名称
如把“AAATest”还原成“AAATest2”。
RESTORE DATABASE AAATest2 -- 新的数据库名称
FROM DISK = 'C:\DbBack\TestAAA' --备份文件位置
with replace,
MOVE 'AAATest' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MYMSSQL\MSSQL\DATA\AAATest2.mdf',
MOVE 'AAATest_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MYMSSQL\MSSQL\DATA\AAATest2_log.ldf'
此脚本仅仅只修改了物理名称,如需修改逻辑名称用2方法。