Docker - 复制mssql数据库

时间:2017-06-14 12:12:09

标签: sql-server docker

我正在使用docker来测试Web应用程序,而这个应用程序需要一个数据库。我将我的应用程序复制到tomcat容器中并创建了一个mssql容器。

但是,我需要复制位于名为“tstsupsq”的服务器中的mssql数据库,其中包含mssql容器中的所有数据(不仅是模式)。

PS:我无法访问tstsupsq服务器

的mdf文件

有人可以帮助我吗?

由于

编辑:

经过多次尝试,我用命令行解决了这个问题。

如何使用命令行将mssql数据库从任何服务器复制到docker:

sqlcmd.exe -S myServer -U myUser -P myPassword -Q "BACKUP DATABASE [databaseName] TO DISK='backupLocation\databaseName.bak'"

docker run -d -p 1433:1433 -e ACCEPT_EULA=Y -e SA_PASSWORD=myPassword --name containerName microsoft/mssql-server-linux:latest

docker cp backupLocation\databaseName.bak containerName:/var/opt/mssql/data

docker exec -it containerName /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P myPassword -Q "RESTORE DATABASE [databaseName] FROM DISK='/var/opt/mssql/data\databaseName.bak' WITH MOVE 'databaseName' TO '/var/opt/mssql/data/databaseName.mdf', MOVE 'databaseName_Log' TO '/var/opt/mssql/data/databaseName.ldf'"

您的数据库现在可以在Docker容器中使用其所有数据。

1 个答案:

答案 0 :(得分:0)

使用cp命令将bak文件复制到container

docker cp YourDbBackup.bak YourContainer:/YourDbBackup.bak

然后使用SSMS恢复bak文件。