我正在使用docker来测试Web应用程序,而这个应用程序需要一个数据库。我将我的应用程序复制到tomcat
容器中并创建了一个mssql
容器。
但是,我需要复制位于名为“tstsupsq”的服务器中的mssql数据库,其中包含mssql容器中的所有数据(不仅是模式)。
PS:我无法访问tstsupsq
服务器
有人可以帮助我吗?
由于
编辑:
经过多次尝试,我用命令行解决了这个问题。
如何使用命令行将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容器中使用其所有数据。
答案 0 :(得分:0)
使用cp
命令将bak
文件复制到container
docker cp YourDbBackup.bak YourContainer:/YourDbBackup.bak
然后使用SSMS
恢复bak
文件。