gpt4 book ai didi

sql-server - 无法在 docker 容器上恢复 sql server 数据库

转载 作者:太空宇宙 更新时间:2023-11-04 10:08:05 26 4
gpt4 key购买 nike

我正在尝试创建一个 docker 容器以从 docker for windows 用作 sql server 数据库的测试实例。我有一个备份文件 MyDb.bak,我想将其作为容器创建的一部分进行恢复

目前我的dockerfile是这样的

FROM microsoft/mssql-server-linux:latest
ENV ACCEPT_EULA="Y"
ENV SA_PASSWORD="<my_sa_password>"
COPY ./MyDb.bak /var/opt/mssql/data/MyDb.bak
ENTRYPOINT /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P <my_sa_password> -Q "RESTORE DATABASE [MyDb] FROM DISK = N'/var/opt/mssql/data/MyDb.bak'"

docker 问题:入口点命令在 sql server 启动之前运行,我找不到如何延迟它直到可以建立连接

sql 问题:当我手动运行还原脚本时无法还原数据库,因为它找不到任何 mdf 文件是什么

Msg 5133, Level 16, State 1, Server c15ec76da554, Line 1
Directory lookup for the file "C:\SQLData\MyDb.mdf" failed with the operating system error 2(The system cannot find the file specified.).

最佳答案

我无法帮助您解决 docker 问题,但此 SQL 命令不完整:

RESTORE DATABASE [MyDb] FROM DISK = N'/var/opt/mssql/data/MyDb.bak'

您需要指定数据库恢复后的位置以及数据库日志文件的位置。如果您不提供,则数据库将尝试恢复数据库文件并将日志记录到它在原始服务器上的相同位置。

你的命令应该是这样的:

RESTORE DATABASE YourDB
FROM DISK = '/var/opt/mssql/backup/YourDB.bak'
WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'

另见 Migrate a SQL Server database from Windows to Linux using backup and restore .

如果想查看备份文件中存储的逻辑名和路径,可以运行:

RESTORE FILELISTONLY FROM DISK = N'/var/opt/mssql/data/MyDb.bak'

这将返回一个结果集,表示已备份的数据库的内容和组织。 See RESTORE FILELISTONLY for more .

关于sql-server - 无法在 docker 容器上恢复 sql server 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50914578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com