环境搭建
windows
安装sqlserver服务
-
安装
-
关闭windows防火墙并重新运行
-
一路下一步直到
这样设置可以让安装该服务的用户直接
安装管理工具
docker
2022安装
Docker:为 Linux 上的 SQL Server 安装容器 - SQL Server | Microsoft Learn
-
拉取镜像
docker pull mcr.microsoft.com/mssql/server:2022-latest
-
制作容器
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=WJJ18340.wjj" \ -p 1433:1433 --name sql1 --hostname sql1 \ -d \ mcr.microsoft.com/mssql/server:2022-latest #密码,要求是最少8位的强密码,要有大写字母,小写字母,数字以及特殊符号,不然会有一个大坑(Docker启动Sql Server容器后过几秒就停止了)。
-
设置 Docker 主机防火墙规则
默认情况下,Docker 带有一个内置的防火墙,需要开放 1433 端口才能让外部访问 SQL Server。使用以下命令开放 Docker 主机的 1433 端口:
sudo ufw allow 1433/tcp
重启防火墙,注意重启防火墙之后才会生效。
sudo ufw reload
-
服务器防火墙配置1433的开放端口
-
配置容器内部的 SQL Server
进入容器
docker exec -it 6239153a3f7f /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'WJJ18340.wjj'
配置远程连接
在 SQL Server 命令行界面中,执行以下命令来配置远程连接:-- 允许远程连接 EXEC sp_configure 'remote access', 1 GO RECONFIGURE GO -- 允许远程 DAC 连接 EXEC sp_configure 'remote admin connections', 1 GO RECONFIGURE GO -- 重启 SQL Server 使配置生效 SHUTDOWN GO
这些命令将启用 SQL Server 的远程连接功能,并允许远程 DAC 连接。最后,需要重启 SQL Server 使配置生效。
测试连接,注意可以不填写端口,指定端口需要用逗号隔开而不是分号
服务器内存小于2G的情况我们使用docker run之后会发现容器根本跑不起来,使用docker logs
sqlservr: This program requires a machine with at least 2000 megabytes of memory.
也就是可用内存没有2g所以报错,启动不了。
- 破解思路:把内存限制被修改为 512m在启动即可
正常情况下我们可以进入docker内部去修改文件,但是这里由于启动不了docker容器,所以也就进不去,我们可以把docker内部的文件复制到宿主机,修改后在复制回去宿主机即可。 - 把docker内部的文件拷贝到宿主机:
语法:docker cp [容器id]:docker容器中配置文件路径 主机路径 - 实例:docker cp [容器id]:/opt/mssql/bin/sqlservr "/home/sqlservr" 这样就可以把docker内部的sqlservr文件拷贝出来到home文件夹下了
docker cp cd6b86630:/opt/mssql/bin/sqlservr "/home/sqlservr"
-
然后修改从docker内部复制出来的文件
先使用mv命令改一下文件名,后面修改后原始文件就还在相当于备份一下文件:mv sqlservr sqlservr.old
使用python修改内存限制代码(注意这里貌似只能使用python2,使用python3好像有点问题,centos7.6自带python2.7)oldfile = open("sqlservr.old", "rb").read() newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e") open("sqlservr", "wb").write(newfile) exit()
改完后就变成两个文件了一个新的一个旧的,一个修改后的一个修改前的
复制到docker之前修改一下文件权限
命令:chmod 777 sqlservr
不然直接复制进去在启动容器可能会报权限相关的错
把修改后的文件复制到docker内部
语法:docker cp 主机文件路径 容器id:docker容器中配置文件路径
实例:docker cp /home/sqlservr 容器id:/opt/mssql/bin/sqlservr 这样就可以把刚刚修改内存限制的文件重新拷贝进去了
docker cp /home/sqlservr cd6b8663:/opt/mssql/bin/sqlservr
安装多个版本python
下载python其他版本
sudo apt install python2
使用update-alternatives --install建立链接
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2
# 后面还有一个数字,分别是1和2,代表了优先级,数字越大优先级越高
选择要执行的版本
sudo update-alternatives --config python
2008安装
- 拉取2008镜像
docker pull exoplatform/sqlserver
- 启动2008镜像
docker run --name sqlserver2008 --restart always -v /home/mssql2008:/var/opt/mssql -d -e 'ACCEPT_EULA=Y' -e SA_PASSWORD='WJJ18340.wjj' -e SQLSERVER_DATABASE=demo -e SQLSERVER_USER=jige -e SQLSERVER_PASSWORD='WJJ18340.wjj' -p 2008:1433 exoplatform/sqlserver
1
-e SQLSERVER_DATABASE=demo:创建一个叫 demo 的数据库
-e SQLSERVER_USER=jige :demo数据库添加了一个用户叫 jige
-e SQLSERVER_PASSWORD='qwer!@#123':设置鸡哥用户的密码
-
进入容器
docker exec -it 1b3c3393b043 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'WJJ18340.wjj'