Docker版SQLServer使用

落日映苍穹つ 2024-03-27 10:08 129阅读 0赞

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

  3. 使用命令行连接Docker里的SQL Server:sudo docker exec -it b633c89cb1be /bin/bash

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

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

  1. CREATE DATABASE TEST_DB
  2. GO
  3. USE TEST_DB
  4. GO
  5. CREATE TABLE Table1 (ID INT, NAME NVARCHAR(50))
  6. GO
  7. Insert Into Table1 Values (0, 'agile')
  1. 查询以返回服务器上所有数据库的名称

    SELECT Name from sys.Databases GO
    select * from sysdatabases GO

  2. 开启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’.

  1. exit
  2. docker stop b633c89cb1be
  3. sql1
  4. docker start b633c89cb1be
  5. 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 条评论,129人围观)

还没有评论,来说两句吧...

相关阅读