当前位置:  开发笔记 > 编程语言 > 正文

将SQL Server数据库还原到Linux Docker

如何解决《将SQLServer数据库还原到LinuxDocker》经验,为你挑选了1个好方法。

我需要在Linux Docker实例上恢复大型SQL Server数据库(https://hub.docker.com/r/microsoft/mssql-server-linux/)

我正在将.bak文件移动到docker并在mssql shell中执行此命令:

RESTORE DATABASE gIMM_Brag FROM DISK = '/var/opt/mssql/backup/BackupFull8H_gIMM.bak' WITH MOVE '[gIMM].Data' T'/var/opt/mssql/data/gIMM.mdf', MOVE '[gIMM].Log' TO '/var/opt/mssql/data/gIMM.ldf', MOVE 'TraceabilityData' TO '/var/opt/mssql/data/gIMM.TraceData.mdf', MOVE 'TraceabilityIndexes' TO '/var/opt/mssql/data/gIMM.TraceIndex.mdf', MOVE 'KpiData' TO '/var/opt/mssql/data/gIMM.KpiData.mdf', MOVE 'KpiIndexes' TO '/var/opt/mssql/data/gIMM.KpiIndex.mdf'

我正确映射了需要的每个文件,我在docker实例上确实有足够的空间,但是我收到了这个错误:

错误:备份或还原已中止.

实际上这个docker的Windows版本也会出现同样的错误......而且因为它不应该是Express版本,所以数据库大小不应该是这里的问题.

如果有人有关于导致此错误的原因的更多信息!

谢谢,



1> TabsNotSpace..:

你没有提到它,但欺骗我的是我没有将BAK文件复制到我的Docker实例.

在终端与docker和你的mssql容器运行...

1)获取容器ID:
$docker inspect -f '{{.Id}}'

2)将BAK文件复制到docker实例:
docker exec -i bash -c 'cat > /var/opt/mssql/backup.bak' < '/source/path/backup.bak'

3)登录mssql:
mssql -u sa -p 'myPassword'

3)恢复db :(你可以用恢复脚本替换它,虽然这对我来说已经足够了)
RESTORE DATABASE [MyDatabase] FROM DISK = N'/var/opt/mssql/backup.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5


在恢复期间,我收到:SQL错误[5133] [S0001]:文件"c:\ Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\database.mdf"的目录查找失败,出现操作系统错误2(该系统找不到指定的文件.).com.microsoft.sqlserver.jdbc.SQLServerException:文件"c:\ Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\database.mdf"的目录查找失败,出现操作系统错误2(系统找不到指定的文件.).
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有