在Linux系统中连接SQL Server是许多企业应用开发中的常见需求,尤其是在跨平台部署或混合云环境中,本文将详细介绍在Linux环境下连接SQL Server的多种方法、配置步骤及注意事项,帮助开发者高效实现数据交互。

prerequisites:环境准备
在开始连接前,需确保满足以下基本条件:
- Linux系统环境:推荐使用主流发行版(如Ubuntu、CentOS、RHEL等),并确保系统已更新至最新状态。
- SQL Server支持:SQL Server提供官方的Linux驱动程序,支持从RHEL/CentOS、Ubuntu、Debian、SUSE等系统连接。
- 网络连通性:确保Linux服务器与SQL Server实例之间网络互通,可通过
ping或telnet测试端口(默认1433)是否可达。 - SQL Server认证信息:准备好有效的登录账号(用户名/密码)或Windows认证所需的域凭据。
方法一:使用Microsoft官方ODBC驱动
Microsoft官方ODBC驱动是连接SQL Server的主流方式,支持C/C++、Python、PHP等多种编程语言。
安装ODBC驱动
以Ubuntu为例,执行以下命令安装ODBC驱动和工具:
sudo apt-get update sudo apt-get install -y msodbcsql17 mssql-tools
对于RHEL/CentOS系统,可通过微软软件源安装:
curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo sudo yum remove unixODBC-utf16 unixODBC-utf16-devel sudo yum install -y msodbcsql17 mssql-tools
配置ODBC数据源
使用odbcinst.ini和odbc.ini配置连接参数,编辑/etc/odbc.ini:

[SQLServer] Driver = ODBC Driver 17 for SQL Server Server = SQL服务器IP地址 Database = 数据库名称 UID = 用户名 PWD = 密码
测试连接
通过isql工具验证连接:
isql -v SQLServer 用户名 密码
若返回“Connected successfully”,则表示连接成功。
方法二:使用JDBC驱动(Java应用)
对于Java应用,可通过JDBC驱动连接SQL Server。
下载JDBC驱动
从微软官网下载JDBC驱动(如mssql-jdbc-xx.jar),并将其放入项目的lib目录或通过Maven/Gradle依赖。
配置连接URL
在Java代码中配置连接字符串:

String url = "jdbc:sqlserver://SQL服务器IP地址:1433;databaseName=数据库名称;user=用户名;password=密码;"; Connection conn = DriverManager.getConnection(url);
依赖管理(Maven示例)
若使用Maven,在pom.xml中添加依赖:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.4.0.jre11</version>
</dependency>
方法三:使用Python库(PyODBC或pymssql)
Python开发者可通过PyODBC或pymssql库实现连接。
安装依赖
pip install pyodbc pymssql
PyODBC示例
import pyodbc
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=SQL服务器IP地址;DATABASE=数据库名称;UID=用户名;PWD=密码')
cursor = conn.cursor()
cursor.execute("SELECT 1")
print(cursor.fetchone())
pymssql示例
import pymssql
conn = pymssql.connect(server='SQL服务器IP地址', database='数据库名称', user='用户名', password='密码')
cursor = conn.cursor(as_dict=True)
cursor.execute("SELECT * FROM 表名")
for row in cursor:
print(row)
常见问题与解决方案
- 连接超时:检查防火墙设置,确保SQL Server端口(默认1433)开放,或使用
telnet IP 1433测试网络连通性。 - 认证失败:确认用户名、密码正确,若使用Windows认证,需配置Kerberos或启用混合模式认证。
- 字符集问题:若出现乱码,可在连接字符串中添加
charset=utf8(PyODBC)或设置SQL Server的排序规则为SQL_Latin1_General_CP1_CI_AS。 - 驱动版本不兼容:确保ODBC/JDBC驱动版本与SQL Server版本匹配(如SQL Server 2019推荐使用ODBC Driver 17或更高版本)。
在Linux系统中连接SQL Server可通过ODBC、JDBC、Python等多种方式实现,选择合适的方法需结合开发语言和项目需求,官方驱动提供了稳定性和兼容性保障,而第三方库(如PyODBC)则简化了开发流程,无论是企业级应用还是小型项目,掌握这些连接方法都能有效提升跨平台数据交互效率,在实际操作中,需注意网络配置、认证参数及驱动版本的匹配,确保连接稳定可靠。













