You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下SQL Server [28000] sa无密码登录失败求助

排查方案与替代数据获取方法

一、核心连接问题排查

1. 切换为Windows集成认证尝试

你的.NET客户端出现SMB2操作,大概率是用Windows集成认证而非SQL Server身份认证(即使客户端显示用sa账户,可能是配置显示误导)。把ODBC连接字符串改成以下内容重试:

isql -v -k "DRIVER={ODBC Driver 18 for SQL Server};SERVER=192.168.x.x,1433;DATABASE=db_name;TrustServerCertificate=yes;Trusted_connection=yes;"

如果成功,说明服务器启用了Windows认证,你之前用的SQL认证sa账户要么被禁用、要么需要密码、要么服务器未开启SQL认证模式。

2. 适配旧版SQL Server的驱动设置

SQL Server 2014(版本12.0.2000)默认不支持强制加密,而ODBC Driver 18默认开启Encrypt=Mandatory,会导致认证流程异常。尝试两个调整:

  • 改用兼容性更好的ODBC Driver 17,连接字符串:
isql -v -k "DRIVER={ODBC Driver 17 for SQL Server};SERVER=192.168.x.x,1433;DATABASE=db_name;UID=sa;PWD=;TrustServerCertificate=yes;Encrypt=no;"
  • 或在Driver 18中显式关闭加密:
isql -v -k "DRIVER={ODBC Driver 18 for SQL Server};SERVER=192.168.x.x,1433;DATABASE=db_name;UID=sa;PWD=;TrustServerCertificate=yes;Encrypt=no;"

3. 确认服务器实例名称

客户端用(local)指向本地实例,但远程连接可能需要指定实例名(默认实例为MSSQLSERVER),尝试修改SERVER参数:

isql -v -k "DRIVER={ODBC Driver 17 for SQL Server};SERVER=192.168.x.x\MSSQLSERVER;DATABASE=db_name;UID=sa;PWD=;TrustServerCertificate=yes;Encrypt=no;"

也可以回看Wireshark抓包,查找SQL Server握手阶段的实例名称字段,确认正确标识。

二、替代数据获取方法

1. 使用Linux原生mssql-tools工具

安装mssql-tools后,用sqlcmd尝试Windows认证连接:

sqlcmd -S 192.168.x.x,1433 -d db_name -E -C

参数说明:-E启用Windows集成认证,-C信任服务器证书。

2. 用Python pyodbc模拟客户端认证逻辑

如果Windows认证可行,用pyodbc直接建立连接:

import pyodbc
conn_str = (
    "DRIVER={ODBC Driver 18 for SQL Server};"
    "SERVER=192.168.x.x,1433;"
    "DATABASE=db_name;"
    "Trusted_Connection=yes;"
    "TrustServerCertificate=yes"
)
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
# 示例查询
cursor.execute("SELECT TOP 10 * FROM your_table")
for row in cursor:
    print(row)

3. 挖掘客户端凭证缓存

在局域网内的Windows客户端上,打开凭据管理器(控制面板→用户账户→凭据管理器),查找「Windows凭据」中SQL Server相关的存储凭证,提取后用于ODBC连接。

内容的提问来源于stack exchange,提问作者Morpheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:45:33