我需要在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版本,所以数据库大小不应该是这里的问题.
如果有人有关于导致此错误的原因的更多信息!
谢谢,
你没有提到它,但欺骗我的是我没有将BAK文件复制到我的Docker实例.
在终端与docker和你的mssql容器运行...
1)获取容器ID:
$docker inspect -f '{{.Id}}'
2)将BAK文件复制到docker实例:
docker exec -i
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