SQL Server客户端加密不支持错误及SQL Native Client升级求助
问题分析与解决方案
错误根源
你碰到的「[Microsoft][ODBC Driver 17 for SQL Server]Encryption not supported on the client」错误,本质是ODBC Driver 17默认强制加密连接,但SQL Native Client 10不支持该加密协议,加上Windows Server 2008 R2的TLS版本限制,导致连接失败。而直接卸载旧版SNAC后安装11出现服务器异常,是因为旧组件被系统或其他服务依赖,强制卸载破坏了关联依赖。
正确的SQL Native Client 11升级步骤
SNAC 11可以与10版本共存,无需强制卸载旧版,正确操作如下:
- 备份前置检查
- 备份Windows Server 2008 R2系统状态,或至少备份SQL Server相关配置文件(如
C:\Program Files\Microsoft SQL Server下的关键配置)。 - 检查依赖:通过「控制面板→程序和功能→已安装更新」找到「Microsoft SQL Server 2008 Native Client」,右键选「更改」查看关联程序;或用Process Explorer搜索
sqlncli10.dll,确认哪些进程在使用该组件。
- 备份Windows Server 2008 R2系统状态,或至少备份SQL Server相关配置文件(如
- 安装SNAC 11
直接下载对应系统架构(x86/x64)的「SQL Server 2012 Native Client」安装包,运行后选择「安装」模式,完成后系统会同时保留SNAC 10和11组件。 - 切换CodeIgniter使用SNAC 11
修改CodeIgniter数据库配置文件application/config/database.php:- 若用ODBC连接:更新
$db['default']['dsn']为Driver={SQL Server Native Client 11.0};Server=你的服务器地址;Database=你的数据库名; - 若用SQLSRV扩展:确保PHP的
php_sqlsrv_74_ts.dll(或nts版本)适配SNAC 11,同时设置$db['default']['driver'] = 'sqlsrv';
- 若用ODBC连接:更新
- 可选:清理旧版SNAC
验证连接正常后,若确认无程序依赖SNAC 10,可在「程序和功能」中卸载「Microsoft SQL Server 2008 Native Client」,此时不会出现服务器异常。
临时加密错误解决方案(无需升级)
若暂时不想升级SNAC,可在连接字符串中禁用加密(仅建议内部可信网络使用):
修改CodeIgniter数据库配置的DSN,添加Encrypt=no;参数:
$db['default']['dsn'] = 'Driver={ODBC Driver 17 for SQL Server};Server=你的服务器地址;Database=你的数据库名;Encrypt=no;';
内容的提问来源于stack exchange,提问作者M. Rizky Septiadi
相关产品推荐
相关产品推荐

