SQL Server in Docker 还原数据库
2019-08-03 00:00
1551 查看
上一回演示了如果在Docker环境下安装SQL Server,这次我们来演示下如何还原一个数据库备份文件到数据库实例上。
使用winscp上传bak文件到linux服务器
上一回我们启动docker容器的时候使用了-v参数挂账了本地目录/hd2/sqlserver2019_data到容器内目录/var/opt/mssql,所以我们只需要把文件testdb.bak上传到/hd2/sqlserver2019_data目录,docker容器即可访问。
我使用了下Sql Server Management Studio的还原功能试了下,没有成功,不知是不是SSMS版本的问题。既然SSMS不能还原,那就使用命令行来试试吧。
使用docker exec命令在容器内执行命令
因为SQL Server安装在Docker容器内,所以执行命令行都需要进入到容器内。
sudo docker exec -it sqlserver2019 /bin/bash
接下来的命令全部在sqlserver2019容器内执行。
使用RESTORE FILELISTONLY命令列出备份数据文件的逻辑名
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'dev@123,' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/testdb.bak"' | tr -s ' ' | cut -d ' ' -f 1-2
使用该命令可以把数据库的数据文件,日志文件名称显示出来。在接下来的恢复操作中有用。
使用RESTORE DATABASE命令还原数据库
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'dev@123,' -Q 'RESTORE DATABASE testdb FROM DISK = "/var/opt/mssql/testdb.bak" WITH MOVE "testdb" TO "/var/opt/mssql/data/testdb.mdf" , MOVE "testdb_log" TO "/var/opt/mssql/data/testdb.ldf"'
看到RESTORE DATABASE successfully的时候表示数据库还原成功了。让我们使用SSMS看看数据库是否真的还原成功了。
可以看到数据库已经还原上去,里面的表,数据都可以正常操作。至此,数据库文件还原成功。
相关文章推荐
- SQL Server中如何用mdf,ldf文件还原数据库
- asp.net 数据库备份还原(sqlserver+access)
- mysql sqlserver hibernate 有数据库关键字 You have an error in your SQL syntax; check the manual that corres
- sqlserver copy或者还原备份的数据库后 owner无法删除
- MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
- 存储session状态在SQL 服务器的数据库中Storing Session State in a SQL Server Database)
- SQL Server Assembly (SQL CLR) 还原数据库后的问题
- SQLServer还原数据库失败(Microsoft.SqlServer.Management.RelationalEngineTasks)
- MS Sql Server附件或还原数据库时报access is denied
- sp_depends 被检查相关性的数据库对象。对象可以是表、视图、存储过程或触发器 in sql server
- SQL Server Management Studio完整备份与还原数据库
- MS SQL SERVER 2005 数据库还原到MS SQL SERVER2000
- 利用SQL SERVER MANAGER STUDIO 备份数据库和还原数据库 SQL SERVER2005
- SqlServer T-Sql实现数据库完整备份和还原
- 在SQL Server Management Studio中还原数据库
- Microsoft SQL Server 2005 数据库还原 Microsoft SQL Server 2000
- 数据库备份还原工具EMS SQL Angel for SQL Server发布1.3版本
- Microsoft SQL Server 2005 还原数据库的方法(图)
- How to Kill All Processes That Have Open Connection in a SQL Server Database[关闭数据库链接 最佳方法] -摘自网络
- SQL Server Reporting Service 报错:报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥,必须还原备份密钥或删除所有加密的内容。