命令行导入SQLServer的备份bak文件
总结帖,自用记录
1、安装SQLServer
这里不细说,查看Linux:CentOS7安装SQLServer_大坏蛋_的博客-CSDN博客_centos7安装sqlserver,亲测可行。
2、Navicat导入bak文件
用Navicat的导入功能和命令导入总是提示备份集中的数据库备份与现有的 'test' 数据库不同
,如下:
[root@localhost ~]# sqlcmd -S localhost -U SA -p
Password:
1> RESTORE DATABASE [test] FROM DISK = N'/opt/mssql/UFSystem/UFSystem.bak' WITH FILE = 1, NORECOVERY, STATS = 5;
2> go
Msg 3154, Level 16, State 4, Server localhost, Line 1
备份集中的数据库备份与现有的 'test' 数据库不同。
Msg 3013, Level 16, State 1, Server localhost, Line 1
RESTORE DATABASE 正在异常终止。
Network packet size (bytes): 4096
1 xact[s]:
Clock Time (ms.): total 150 avg 150.0 (6.7 xacts per sec.)
3、命令行导入bak文件
在用Navicat导入失败后,只能尝试使用原生的命令行导入。
3.1、获取逻辑文件名
USE master
RESTORE FILELISTONLY
FROM DISK = '/opt/mssql/UFSystem/UFSystem.bak '
Go
说明:
- DISK是备份文件的位置;
- 记下LogicalName和PhysicalName
3.2、利用bak恢复数据库
USE master
RESTORE DATABASE UFSystem
FROM DISK = '/opt/mssql/UFSystem/UFSystem.bak'
WITH MOVE 'UfSystem' TO '/opt/mssql/UFSystem/UFSystem.MDF' ,
MOVE 'UfSystem_LOG' TO '/opt/mssql/UFSystem/UFSystem.LDF' ,
STATS = 10 , REPLACE
GO
说明:
- UFSystem是准备导入到的数据库
- WITH MOVE 'UfSystem' TO '/opt/mssql/UFSystem/UFSystem.MDF' ,'UfSystem'是之前的LogicalName,'/opt/mssql/UFSystem/UFSystem.MDF' 是新的PhysicalName
- MOVE 'UfSystem_LOG' TO '/opt/mssql/UFSystem/UFSystem.LDF',和上面一样
- STATS = 10 每完成10%显示一条记录
- REPLACE是强制还原
- 导入成功后,最好不要移动或者改名
3、遇到的问题
已将数据库上下文更改为 "master"。
Msg 3634, Level 16, State 1, Server localhost, Line 2
在对 '/opt/Test/Test.MDF' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。
Msg 3156, Level 16, State 5, Server localhost, Line 2
文件 'Test' 无法还原为 '/opt/Test/Test.MDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
Msg 3634, Level 16, State 1, Server localhost, Line 2
在对 '/opt/Test/Test.LDF' 尝试 'RestoreContainer::ValidateTargetForCreation' 时,操作系统返回了错误 '5(拒绝访问。)'。
Msg 3156, Level 16, State 5, Server localhost, Line 2
文件 'Test_LOG' 无法还原为 '/opt/Test/Test.LDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
Msg 3119, Level 16, State 1, Server localhost, Line 2
在计划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
Msg 3013, Level 16, State 1, Server localhost, Line 2
RESTORE DATABASE 正在异常终止。
Network packet size (bytes): 4096
1 xact[s]:
Clock Time (ms.): total 167 avg 167.0 (6.0 xacts per sec.)
开始以为命令错了,后来看到操作系统返回了错误 '5(拒绝访问。)'
,猜测是否权限问题,后来将文件夹授权后就可以了chown -R mssql /opt/Test
参考文章
Linux:CentOS7安装SQLServer_大坏蛋_的博客-CSDN博客_centos7安装sqlserver
RESTORE DATABASE命令还原SQLServer 2005 数据库
如果帮到你的话,就赞我一下呗^_^