远程连接Sql server 2012:已成功与服务器建立连接,但在登录过程中发生错误。(provider:SSL Provider,error:0 )...

针对无法连接SQL Server的问题,尝试了以管理员身份执行netsh winsock reset命令但未解决。最终采用Sqlserver2008客户端及在VS开发中使用System.Data.OleDb代替System.Data.SqlClient的方法作为临时解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照论坛大家的建议,以管理员身份执行netsh winsock reset命令,重置winsock,重启服务器后,依旧不行。临时解决方案:

  1. 使用Sql server 2008客户端;
  2. 若是用VS开发,在程序中使用System.Data.OleDb代替System.Data.SqlClient。

应客户要求项目采用sqlserver2012+java开发,不知道后面用java代码连接数据库时会不会出现同样的问题。

 

感谢Empty

### C# 中解决 SQL Server 连接错误 (-2146893019) 的方法 当尝试通过 SSL 加密连接SQL Server 时,如果遇到错误 `-2146893019` 或提示“证书链是由不受信任的颁发机构颁发的”,这通常是因为服务器使用的 SSL 证书未被客户端识别为可信。以下是解决方案: #### 修改连接字符串 可以通过调整连接字符串中的参数来绕过此问题。具体来说,在连接字符串中添加 `Encrypt=false;` 可以禁用加密连接,从而避免因 SSL 验证失败而导致的错误[^3]。 ```csharp string connStr1 = "Server=.;Database=demo6;Trusted_Connection=True;MultipleActiveResultSets=true;"; // 调整后的连接字符串 connStr1 += ";Encrypt=false;"; ``` 另一种方式是设置 `TrustServerCertificate=true;` 参数,该选项会指示客户端跳过对服务器证书的信任验证过程,适用于开发环境或测试场景。 ```csharp string connStr1 = "Server=.;Database=demo6;Trusted_Connection=True;MultipleActiveResultSets=true;"; // 使用 TrustServerCertificate 参数 connStr1 += ";TrustServerCertificate=true;"; ``` #### 安装并配置有效的 SSL 证书 为了实现更安全的通信,建议安装由受信 CA(认证机构)签发的有效 SSL 证书,并确保其正确部署于 SQL Server 上。完成证书安装后需重启 SQL Server 服务以便生效[^2]。 - **步骤概述** - 获取合法的 SSL 证书。 - 将证书导入至运行 SQL Server 的机器上。 - 更新 SQL Server 设置以启用强制使用 SSL 功能。 #### 自定义校验逻辑 (高级) 对于某些特殊需求的应用程序,可能需要自定义 TLS/SSL 握手期间的服务器证书验证行为。可通过重写 .NET Framework 提供的相关回调函数达成目标[^1]。 下面展示了一个简单的例子用于演示如何覆盖默认的行为: ```csharp using System; using System.Net; public class Program { public static void Main() { ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; // 始终接受任何证书 }; Console.WriteLine("Custom validation logic applied."); } } ``` > 注意:上述代码仅作教学用途,请勿轻易应用于生产环境中! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值