SQLServer 2012 已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。

本文解决SQLServer2012在连接其他电脑实例时遇到的握手期间错误问题,通过运行CMD命令,找到并卸载与错误相关的巡游加速器插件,重置LSP连接,最终成功解决问题。

楼主用SQL Server 2012 在连接其他电脑的实例时,一直提示“已成功与服务器建立连接,但是在登录前的握手期间发生错误。 (provider: SSL Provider, error: 0 - 等待的操作过时。”

Google了很多资料,综合自己的问题,并参照官方问题介绍:http://support.microsoft.com/kb/2568167

和另外一位仁兄的博客http://blog.sina.com.cn/s/blog_728bc6a1010182ai.html整理解决方法如下:


  1. 运行CMD命令提示符工具,输入netsh WinSock Show Catalog,
  2. 找到0x20000或者0x66  flag的provider

描述:                              XunYount
提供程序 ID:                        {11C21122-85E1....(什么的忘记了,一段GUID值)
提供程序路径:                     C:\Windows\System32\xunyount.dll
服务标志:                           0x66

经查实,这是巡游加速器的东西,忽然开朗,因为玩LOL,下载的多玩英雄联盟盒子,使用过盒子自带的巡游加速器。


病因已知道,现在是果断卸载巡游加速器(小广告:可用迅雷网游加速器替代,楼主一直在用,感觉不错。),

  1. 在多玩英雄联盟盒子的安装目录有个xunyou的文件夹,直接删除;
  2. 然后在C:\Windows目录下搜索xunyount文件,将其删除;
  3. 现在用管理员身份运行CMD,输入netsh winsock reset并回车(注意,必须是已管理员身份运行,这个重置LSP连接,因为巡游加速修改过LSP。);
  4. 重启即可,如果重启连接还是问题依旧,请重试整个流程。

### 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."); } } ``` > 注意:上述代码仅作教学用途,请勿轻易应用于生产环境中! ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

madStone_l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值