Docker----build mssql(SQL Server) based on docker

1. Build mssql database

1. Use docker to build mssql

docker run -d --name mssql -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=ydt123456_' -p 1433:1433 -v /docker/mssql:/var/opt/mssql --restart always mcr.microsoft.com/mssql/server:2017-latest
  • This password requires a complex password with uppercase and lowercase characters and special symbols, just replace it with your own password. If it is a Linux server, you can use the host mode directly without port mapping.
docker run -d --name mssql --net host -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=ydt123456_'  -v /docker/mssql:/var/opt/mssql --restart always mcr.microsoft.com/mssql/server:2017-latest

2. Log in to the container

docker exec -it mssql bash

2. mssql connection and use

1. Connect to sqlcmd

/opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U SA -P ydt123456_

2. Execute the SQL statement to create the database

> create database testDB
> go
  • If you just want to create a database, you can already complete it, and you can connect to the database with Navicat Premium.

3. mssql backup and restore

1. Run sqlcmd to back up the database

docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P ydt123456_  -Q "BACKUP DATABASE test  to disk='/var/opt/mssql/backup/test.bak'"

2. Restore the database

docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P ydt123456_ -Q 'RESTORE DATABASE test FROM DISK = "/var/opt/mssql/backup/test.bak" WITH MOVE "test" TO "/var/opt/mssql/data/test.mdf", MOVE "test_Log" TO "/var/opt/mssql/data/test.ldf"

Four. mssql database backup script

#!/bin/bash

ip=localhost
user=sa
passwd=ydt123456_

back_path=/docker/mssql/backup/
docker_path=/var/opt/mssql/backup/
db_name=test
back_time=`date +%Y%m%d_%H%M%S`
docker_filename=$docker_path$db_name$back_time
back_filename=$back_path$db_name$back_time
del_time=`date -d "7 day ago" +"%Y%m%d"`
del_backfile=$back_path$db_name$del_time

if [ ! -d "$back_path" ]; then
    mkdir -p "$back_path"
else
    cd "$back_path"
fi

docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -S $ip -U $user -P $passwd -Q "BACKUP DATABASE $db_name to disk='$docker_filename.bak'"

cd $back_path
tar -zcPf $back_filename.tar.gz $back_filename.bak
rm -f $back_filename.bak
if [ -e $back_filename.tar.gz ];then
    rm  -rf $del_backfile*.gz
    echo "database backup success!"
else
    echo "database backup failed!"
fi

After executing the script, the following prompt appears, which means the backup is successful

ydt@dt:/docker/mssql$ sudo bash mssqlback.sh
Processed 344 pages for database 'test', file 'test' on file 1.
Processed 2 pages for database 'test', file 'test_log' on file 1.
BACKUP DATABASE successfully processed 346 pages in 0.052 seconds (51.983 MB/sec).
database backup success!

Guess you like

Origin blog.csdn.net/weixin_44006354/article/details/103952616