无法从本地磁盘还原SQL数据库:SSMS仅识别服务器文件系统
解决本地.bak备份还原至远程SQL Server 2022实例的问题
核心原因:SQL Server的还原操作是在远程服务器端执行的,它只能识别服务器本地的文件系统,或者服务器有权限访问的网络共享路径,你的本地PC路径对远程服务器来说是不可见的,这就是你遇到找不到文件错误的根本原因。
以下是三种可行的解决方法:
方法一:将备份文件上传至远程服务器本地路径
- 通过远程桌面、文件共享(SMB)或FTP工具,把本地的
MYDB.bak复制到远程SQL Server服务器的可访问路径,比如默认备份目录(注意SQL Server 2022的实例目录前缀是MSSQL16,而非你写的MSSQL15):C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ - 确保SQL Server服务账号(通常是
NT SERVICE\MSSQLSERVER)对该路径拥有读取权限。 - 执行T-SQL还原命令(若备份中的数据/日志文件路径在远程服务器不存在,需添加
MOVE子句指定新路径):
RESTORE DATABASE [MYDB] FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\MYDB.bak' WITH MOVE 'MYDB_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\MYDB.mdf', MOVE 'MYDB_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\MYDB.ldf'
方法二:将本地文件夹设为网络共享,让远程服务器访问
- 在本地PC上找到存放
MYDB.bak的文件夹,右键设置共享,授予远程SQL Server服务账号(或具备访问权限的域/本地账号)读取权限。 - 使用UNC路径(格式:
\\你的PC名称/IP\共享文件夹名\MYDB.bak)执行还原:
RESTORE DATABASE [MYDB] FROM DISK = '\\192.168.1.100\BackupShare\MYDB.bak' WITH MOVE 'MYDB_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\MYDB.mdf', MOVE 'MYDB_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\MYDB.ldf'
- 注意:确保远程服务器与本地PC在同一网络,防火墙允许SMB端口(445)通行,且SQL Server服务账号能正常访问该共享。
方法三:使用SSMS的本地文件直接还原(SSMS 18+版本支持)
- 打开SSMS连接远程SQL Server实例,右键「数据库」→「还原数据库」。
- 在「常规」选项卡,「源」选择「设备」,点击右侧省略号。
- 在「选择备份设备」窗口点击「添加」,弹出的「定位备份文件」窗口顶部选择「本地文件」,直接选中本地PC的
MYDB.bak文件。 - SSMS会自动将本地文件上传至远程服务器的临时路径,确认目标数据库名称后,可在「选项」卡调整数据/日志文件的存放路径,最后点击「确定」开始还原。
额外注意事项
- 验证备份文件完整性:可在本地执行
RESTORE VERIFYONLY FROM DISK = '本地路径\MYDB.bak'确认备份无损坏。 - 版本兼容性:SQL Server 2022仅支持还原2016及以上版本的备份,低版本实例无法还原高版本备份。
- 权限检查:无论使用哪种方法,都要确保SQL Server服务账号对备份文件有读取权限,对数据/日志文件路径有写入权限。
内容的提问来源于stack exchange,提问作者Dizzy49
相关产品推荐
相关产品推荐

