【问题】
还原SQL数据库,执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo) 在 "C:\XX.bak" 上读取失败: 38(已到文件结尾。) (Microsoft SQL Server,错误: 3203)。
【分析】
可能是拷贝的文件有问题,通常在本机磁盘存在坏道的情况下存在。可能是物理磁盘的格式问题,或其文件逻辑不兼容问题。
【解决方法】
1. 输入命令cmd进入命令行,输入sqlcmd 回车.
2. 输入以下语句,回车
RESTORE DATABASE 还原后的数据库名 FROM DISK = 'D:\db.bak(备份文件)' WITH REPLACE , MOVE 'Db(曾经的mdf逻辑名)' TO 'D:\Db.mdf(mdf还原后的路径)', MOVE 'Db_log(曾经的ldf逻辑名)' TO 'D:\Db_log.ldf(ldf还原后的路径)'
例如:
RESTORE DATABASE xzcrm FROM DISK = 'E:\db\201610211600.bak' WITH REPLACE
, MOVE 'xzcrm_Data' TO 'E:\db\Custom\xzcrm.mdf'
, MOVE 'xzcrm_Log' TO 'E:\db\Custom\xzcrm_log.ldf'
3.再输入go 回车即可执行。