侧边栏壁纸
博主头像
WinJay博主等级

博观而约取 厚积而薄发

  • 累计撰写 340 篇文章
  • 累计创建 169 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

Docker版SQLServer使用

WinJay
2021-10-10 / 0 评论 / 0 点赞 / 73 阅读 / 679 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-12-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Docker版SQLServer使用

image-20221222135359000

参考指南

Docker 命令大全
Docker 操作命令详解

https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-docker-container-deployment?view=sql-server-ver16&pivots=cs1-bash

Docker镜像

https://hub.docker.com/_/microsoft-mssql-server?tab=description

基础操作

  • 查看docker使用情况:
docker ps -q | xargs docker stats --no-stream
  • 查看docker:
docker ps -a
  • 重启正在运行的容器:
docker restart 容器名称
  • 查看容器运行日志:
docker logs 容器名称
  • 查看docker的运行状态
systemctl status docker
  • 进入到Docker容器内部:
sudo docker exec -it containerID /bin/bash 

示例操作

示例(进入FZ_UMC容器):

  1. 获取containerID:docker ps -q | xargs docker stats --no-stream(或者:docker ps)

  2. 进入到Docker容器:sudo docker exec -it bd8cb5215ebc /bin/bash

sudo docker exec -it ee1372d25cce /bin/bash

docker exec ee1372d25cce sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf #修改TLS连接等级

cat /etc/ssl/openssl.cnf
  1. 使用命令行连接Docker里的SQL Server:sudo docker exec -it b633c89cb1be /bin/bash

  2. 使用docker exec命令登录到容器内部执行命令:/opt/mssql-tools/bin/sqlcmd -S localhost -U webuser -P "webuserXXX"

  3. 在容器内部执行命令,打开sqlcmd

打开sqlcmd之后我们就可以进行一些数据库的操作了,比如创建数据库,创建表,查询数据等。

CREATE DATABASE TEST_DB

GO

USE TEST_DB

GO

CREATE TABLE Table1 (ID INT, NAME NVARCHAR(50))

GO

Insert Into Table1 Values (0, 'agile')
  1. 查询以返回服务器上所有数据库的名称
SELECT Name from sys.Databases GO
select * from sysdatabases GO
  1. 开启docker里mssql-server的代理服务:
docker exec -it b633c89cb1be "bash"
root@b9a09ce17c02:/# /opt/mssql/bin/mssql-conf set sqlagent.enabled true

SQL Server needs to be restarted in order to apply this setting. Please run

'systemctl restart mssql-server.service'.




exit
docker stop b633c89cb1be

sql1

docker start b633c89cb1be

sql1

Docker里.NET5程序连接SQLSERVER 2008 R2 SP3时,数据库连接报以下错误的处理:

报错:System.Data.SqlClient.SqlException (0x80131904): A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 31 - Encryption(ssl/tls) handshake failed)

  • 原因:出现错误的原因为服务器默认使用的ssl为TLS1_2版本,而sqlserver需要的版本为TLSv1

  • 解决:

1.进入容器:

A.进入容器:docker exec -it ee1372d25cce /bin/bash

B.查看SSL版本:openssl version

2.查看 openssl.cnf 配置文件

A.打开配置文件并检查:cat /etc/ssl/openssl.cnf

B.文件末尾确保配置如下,如果不一致,则以下面为准,修改配置文件:

 [system_default_sect]

 MinProtocol = TLSv1

 CipherString = DEFAULT@SECLEVEL=1

C.修改完成以后重启:sshd sudo systemctl restart sshd

问题解决!


下载SSMS

下载地址https://learn.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16

0

评论区