如何在Solaris11服务器安装连接Azure SQL MI的命令行工具以执行SQL及BCP操作?
在Solaris 11上安装sqlcmd和bcp连接Azure SQL MI的方案
由于微软官方未提供Solaris系统的sqlcmd/bcp工具安装包,可通过以下几种替代方案满足业务需求:
方案一:使用FreeTDS开源工具集
FreeTDS是支持TDS协议的开源实现,可连接Azure SQL MI、SQL Server等数据库,自带类似sqlcmd和bcp的工具:
- 安装FreeTDS
- 若Solaris 11 pkg仓库无现成包,可通过源码编译:
- 下载FreeTDS稳定版源码包并解压
- 执行配置命令:
./configure --prefix=/usr/local/freetds --with-tdsver=7.4(7.4版本适配Azure SQL MI的协议要求) - 编译安装:
make && make install
- 若Solaris 11 pkg仓库无现成包,可通过源码编译:
- 替代sqlcmd执行SQL
使用FreeTDS自带的tsql工具,连接命令示例:
进入交互模式后即可执行SQL语句,也可通过tsql -S <Azure_SQL_MI_FQDN> -U <用户名> -P <密码> -D <数据库名>-Q参数直接执行单条SQL。 - 替代bcp进行数据导入导出
FreeTDS自带bcp工具(语法与微软官方版本略有差异),导出示例:bcp <数据库名>.<架构名>.<表名> out /本地输出路径/file.csv -S <Azure_SQL_MI_FQDN> -U <用户名> -P <密码> -c -t,
方案二:通过Docker容器运行官方工具
若Solaris 11已部署Docker环境,可直接使用微软官方的mssql-tools镜像:
- 拉取镜像:
docker pull mcr.microsoft.com/mssql-tools - 执行sqlcmd命令:
docker run --rm mcr.microsoft.com/mssql-tools sqlcmd -S <Azure_SQL_MI_FQDN> -U <用户名> -P <密码> -Q "SELECT * FROM your_table" - 执行bcp操作(需挂载本地目录实现文件读写):
docker run --rm -v /本地目录:/容器内目录 mcr.microsoft.com/mssql-tools bcp <数据库名>.<架构名>.<表名> out /容器内目录/file.csv -S <Azure_SQL_MI_FQDN> -U <用户名> -P <密码> -c -t,
方案三:编译微软开源版sqlcmd
微软已将sqlcmd基于Go语言开源,可在Solaris 11上自行编译:
- 安装Go环境:通过Solaris pkg安装
developer/go-1.20或更高版本 - 克隆源码仓库:
git clone https://github.com/microsoft/go-sqlcmd.git - 编译生成二进制文件:
cd go-sqlcmd && go build -o sqlcmd ./cmd/sqlcmd - 将编译好的
sqlcmd复制到/usr/local/bin等PATH目录下即可使用注:开源版sqlcmd基本兼容官方功能,但bcp功能需单独处理,可结合方案一的FreeTDS bcp工具使用
注意事项
- 确保Solaris服务器网络可访问Azure SQL MI的1433端口,且Azure防火墙规则允许该服务器IP访问
- 优先使用Azure AD认证方式(FreeTDS和开源sqlcmd均支持部分Azure AD认证模式)
- 连接前可通过
nc -zv <Azure_SQL_MI_FQDN> 1433验证网络连通性
内容的提问来源于stack exchange,提问作者Carson
相关产品推荐
相关产品推荐

