唔,官方版本的 mssql-tools 镜像好像好久没更新了(https://hub.docker.com/_/microsoft-mssql-tools),用起来有一些bug,在此根据官方 Dockerfile 修改生成最新版本的镜像:
# SQL Server Command Line Tools FROM ubuntu:20.04 LABEL maintainer="SQL Server Engineering Team" # apt-get and system utilities RUN apt-get update && apt-get install -y curl apt-transport-https debconf-utils gnupg2 && rm -rf /var/lib/apt/lists/* # adding custom MS repository RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - RUN curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list # install SQL Server drivers and tools RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc RUN /bin/bash -c "source ~/.bashrc" RUN apt-get -y install locales RUN locale-gen zh_CN.UTF-8 RUN update-locale LANG=zh_CN.UTF-8 CMD /bin/bash
复制下来,保存为 Dockerfile 文件,执行编译命令:docker build . -t xxx 就可以获得最新版本的 mssql-tools 镜像了。
简单的使用命令记录:
1、使用容器(用完即删,同时映射一个 sql 目录便于执行批量脚本):
docker run -it --rm -v /home/sql:/home/sql --name=mssql-tools docker-registry.psy-cloud.com/mssql-tools
2、连接数据库
sqlcmd -S 10.10.10.10 -U username -P password
3、批量执行脚本(-e 参数可以输出执行的脚本内容)
sqlcmd -S 10.10.10.10 -U username -P password -d dbname -i filename.sql -e