如何通过CentOS跳板服务器查询远端SQL Server的数据库及schema列表
CentOS跳板机查询目标SQL Server数据库及Schema列表操作方案
1. 前置依赖安装(首次操作执行)
CentOS默认未内置SQL Server命令行工具,需先安装sqlcmd工具:
- 导入微软软件源
# CentOS7 执行 curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/msprod.repo # CentOS8/9 执行 curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/msprod.repo - 安装工具包
yum install -y mssql-tools unixODBC-devel - 配置环境变量(全局生效)
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> /etc/profile source /etc/profile
2. 执行查询命令
查询所有数据库列表
sqlcmd -S <目标SQL ServerIP[,端口]> -U <登录用户名> -P <登录密码> -Q "SELECT name AS 数据库名称 FROM sys.databases;"
查询所有Schema列表
sqlcmd -S <目标SQL ServerIP[,端口]> -U <登录用户名> -P <登录密码> -Q "SELECT name AS Schema名称 FROM sys.schemas;"
命令示例
假设目标SQL Server IP为10.1.1.10,端口为1433,登录用户为sa,密码为Admin@2024,查询命令如下:
# 查询数据库 sqlcmd -S 10.1.1.10 -U sa -P 'Admin@2024' -Q "SELECT name AS 数据库名称 FROM sys.databases;" # 查询Schema sqlcmd -S 10.1.1.10 -U sa -P 'Admin@2024' -Q "SELECT name AS Schema名称 FROM sys.schemas;"
注意事项
- 若目标SQL Server使用非默认1433端口,需在IP后拼接端口,示例:
-S 10.1.1.10,1455 - 若登录密码包含特殊字符(@、!、空格等),需用单引号包裹密码,避免Shell解析异常
- 需导出结果到本地文件的,可在命令末尾追加
-o /path/result.txt参数
内容的提问来源于stack exchange,提问作者busheriff
相关产品推荐
相关产品推荐

