我需要在Linux实例(https://hub.docker.com/r/microsoft/mssql-server-linux/)上恢复一个大型Server数据库
我正在将我的.bak文件移到停靠程序中,并在mssql中执行以下命令:
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实例上有足够的空间,但是我得到了这个错误:
错误:备份或还原已中止。
同样的错误发生在窗口版本的这个对接器实际上..。而且,由于它不应该是一个Express版本,数据库大小不应该是这里的问题。
如果有人有更多的信息是什么导致了这个错误!
谢谢,
发布于 2017-10-13 20:35:26
@TOUDIdel您必须使用linux上的实际文件系统路径,而不是错误中显示的虚拟路径。
RESTORE DATABASE Northwind FROM DISK='/var/opt/mssql/Northwind.bak' WITH MOVE 'Northwind' TO '/var/opt/mssql/data/NORTHWND.MDF', MOVE 'Northwind_log' TO '/var/opt/mssql/data/NORTHWND_log.ldf'http://www.raditha.com/blog/archives/restoring-a-database-on-ms-sql-server-for-linux-docker/
发布于 2017-03-07 03:08:47
你没有提到,但欺骗我的是,我没有将BAK文件复制到我的Docker实例中。
在码头,码头和您的mssql容器运行.
1)获取容器ID:
$docker inspect -f '{{.Id}}' <container_name>
2)将BAK文件复制到docker实例:
docker exec -i <container_id> 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
发布于 2017-03-02 06:37:20
当我遇到这个问题时,这是因为restore命令花费了足够长的时间让mssql超时(带有一条完全没有帮助的错误消息)。在连接时指定一个长超时允许还原完成。例如
mssql -s localhost -p "<sa_password>" -t 36000000 -T 36000000https://stackoverflow.com/questions/41716988
复制相似问题