提供程序:SSL 提供程序,错误:0 - 远程主机强制关闭现有连接

Rya*_*yan 10 sql-server ssl sqlexception windows-server-2012-r2 windows-server-2019

我编写了一个控制台应用程序,它只调用 SQL Server 数据库中的存储过程。然后,我设置了一个 Windows 任务计划程序事件,每 5 分钟调用一次控制台应用程序的 .exe 文件。大多数情况下它都能工作,但是每天大约有 10 次左右,一旦打开连接来调用存储过程,我们就会收到以下 sqlException:

System.Data.SqlClient.SqlException(0x80131904): 已成功与服务器建立连接,但登录过程中发生错误。(提供程序:SSL 提供程序,错误:0 - 远程主机强制关闭现有连接。)

我临时构建了一个 try 块,其中包含简单的 5 次重试和短暂的暂停,这对一些人有所帮助,但每天仍有几次 5 次都失败。我认为这一定是某种沟通问题,但我什至不知道该去哪里寻找。

我所做的大部分研究都指向 TLS 或防火墙问题。我不是这方面的专家,但我认为如果其中任何一个是原因,那么每次都会持续出现错误。与 SSL 的参考相同。另一方面,出于同样的原因,我不明白这可能是控制台应用程序或存储过程的编码问题,所以我没有想法。

SQL连接代码如下:


    Public Function GetDataTable(tsql As String, Optional ConnectionString As String = Nothing, Optional TryNum As Integer = 1) As DataTable
        Try
            Dim dt As DataTable
            Using conn As SqlConnection = New SqlConnection(If(Not ConnectionString Is Nothing, ConnectionString, SConn))
                conn.Open()
                Using dr As SqlDataReader = (New SqlCommand With {.CommandType = CommandType.Text, .CommandText = tsql, .Connection = conn, .CommandTimeout = SqlCommandTimeout}).ExecuteReader
                    dt = New DataTable()
                    dt.Load(dr)
                    dr.Close()
                End Using
                conn.Close()
            End Using
            Return dt
        Catch exSQL As System.Data.SqlClient.SqlException
            If exSQL.ToString.Contains("A connection was successfully established with the server, but then an error occurred during the login process.") AndAlso TryNum < MaxTries Then
                Threading.Thread.Sleep(RetryWaitMS)
                Return GetDataTable(tsql, ConnectionString, TryNum + 1)
            Else
                SendMsg(ERROR_EMAIL_GROUP, ERROR_EMAIL_GROUP, "CommonUtils - SQL Error", tsql & vbCrLf & exSQL.ToString)
                Throw exSQL
            End If
        End Try
    End Function
Run Code Online (Sandbox Code Playgroud)

小智 10

我多次遇到同样的问题,每次都是这个原因:

当 Windows Server 2012 R2 上运行的应用程序尝试连接到 Windows Server 2019 上运行的 SQL Server 时,也会出现此问题。

https://support.microsoft.com/en-us/help/4557473/errors-when-applications-try-to-connect-to-sql-server-in-windows

  • @TylerH 是的,这会发生在相反的方向。请参阅我的答案以获取解释。我还给出了如何禁用这两个密码的确切步骤。 (2认同)