搜索镜像:docker search mssql
下载镜像:docker pull microsoft/mssql-server-linux
运行镜像:docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=[包含大小写字母、数字的长度不少于8位数的密码]" --privileged=true -v /mnt/mssql/data -p 1433:1433 -d microsoft/mssql-server-linux
使用navicat premiun连接sqlserver,连接工具默认的sqlserver连接端口,就是1433,所以不用在主机地址后面加",1433":
登进去数据库之后,在"新建查询"里就可以新建数据库了:create database test;
使用.bak文档还原数据库
容器内创建文档夹(容器内执行)
mkdir /var/opt/mssql/backup
复制 .bak文档到容器(终端执行)
docker cp d:\exam.bak sql1:/var/opt/mssql/backup
使用Navicat Premium还原要恢复的数据库,新建查询 :
USE master
RESTORE DATABASE exam
FROM DISK = '/var/opt/mssql/backup/exam.bak'
WITH MOVE 'exam' TO '/var/opt/mssql/data/exam.mdf',
MOVE 'exam_log' TO '/var/opt/mssql/data/exam.ldf'
GO
解决问题:
遇到:
Error - Logical file is not part of database. Use RESTORE FILELISTONLY to list the logical file names
在新建查询中运行:
RESTORE FILELISTONLY
FROM DISK = '/var/opt/mssql/backup/example.bak'
查询出对应的LogicalName,然后将恢复数据库sql中的MOVE和WITH MOVE改成对应的LogicalName值: