无SQL Server Management Studio时迁移数据库至另一电脑的方法
嘿,这种糟心情况我碰到过好几次——原机器崩到连SSMS都打不开,要迁SQL Server数据库确实有点棘手,但不用慌,给你两个最靠谱的简单方法,全程不用SSMS就能搞定:
方法一:如果SQL Server服务还能正常启动(最稳妥)
如果原机器虽然跑不了程序,但SQL Server的服务还能正常运行,这个方法是首选,能最大程度保证数据完整:
- 先在原机打开命令提示符(CMD),用
sqlcmd工具连接本地实例:- 如果是默认实例,输入:
sqlcmd -S . -E - 如果是命名实例,输入:
sqlcmd -S .\你的实例名 -E
(-E表示用Windows身份验证登录,要是用SQL账号的话换成-U 用户名 -P 密码)
- 如果是默认实例,输入:
- 进入sqlcmd交互模式后,执行备份命令(替换成你的数据库名和备份路径):
注意:备份路径要选原机能读写的位置,完成后会提示备份成功。BACKUP DATABASE 你的数据库名 TO DISK = 'D:\DB_Backup\你的数据库备份.bak' WITH INIT; - 把生成的
.bak备份文件拷贝到新电脑的某个目录,比如E:\DB_Backup\ - 新电脑上同样打开CMD,用
sqlcmd连接本地实例,先执行下面的命令查看备份里的文件逻辑名(避免还原时路径错误):RESTORE FILELISTONLY FROM DISK = 'E:\DB_Backup\你的数据库备份.bak'; - 然后执行还原命令(替换逻辑名、新路径和数据库名):
(RESTORE DATABASE 你的数据库名 FROM DISK = 'E:\DB_Backup\你的数据库备份.bak' WITH MOVE '数据库逻辑名' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\你的数据库名.mdf', MOVE '数据库逻辑名_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\你的数据库名_log.ldf';MSSQL16.MSSQLSERVER要换成你新电脑上的SQL Server实例对应的文件夹,比如2017版本是MSSQL14.MSSQLSERVER)
方法二:如果SQL Server服务都启动不了(冷拷贝数据文件)
要是原机彻底崩了,连SQL Server服务都启动不了,那就只能直接拷贝核心数据文件:
- 先在原机找到SQL Server的数据文件,默认路径一般是:
C:\Program Files\Microsoft SQL Server\MSSQLXX.实例名\MSSQL\DATA\
里面的.mdf(主数据文件)和.ldf(日志文件)就是你要的,一定要确保SQL Server服务已经完全停止(能操作的话用CMD执行net stop MSSQLSERVER,命名实例是net stop MSSQL$实例名),不然文件会被占用拷贝失败。 - 把这两个文件完整拷贝到新电脑的对应数据目录,比如同样放到
C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\ - 新电脑打开CMD,用
sqlcmd连接实例,执行附加命令:
要是日志文件损坏或找不到,可以换成CREATE DATABASE 你的数据库名 ON (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\你的数据库名.mdf'), (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\你的数据库名_log.ldf') FOR ATTACH;FOR ATTACH_REBUILD_LOG重建日志,但可能会丢失少量未提交的事务,所以尽量找到完整的日志文件。
关键注意事项
- 新电脑的SQL Server版本不能低于原机的版本,比如原机是SQL Server 2019,新机至少要2019或更高版本,不然还原/附加会失败。
- 拷贝文件时一定要保证文件完整,最好对比一下原文件和拷贝后的文件大小,避免损坏。
- 如果原机用的是SQL Server的命名实例,新机要么同样创建同名实例,要么在
sqlcmd命令里指定正确的实例名。
内容的提问来源于stack exchange,提问作者cargt3
相关产品推荐
相关产品推荐

