Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用除SSMS之外的任何内容连接到SQL Server 2016 SP1_Java_C#_Sql Server_Jdbc_Odbc - Fatal编程技术网

Java 无法使用除SSMS之外的任何内容连接到SQL Server 2016 SP1

Java 无法使用除SSMS之外的任何内容连接到SQL Server 2016 SP1,java,c#,sql-server,jdbc,odbc,Java,C#,Sql Server,Jdbc,Odbc,我已经做了11个小时了,但我还是不明白。它最初是一个JAVA连接问题,但此时我能够确认,唯一能够连接到远程SQL Server实例的工具是SQL Server Management Studio。JDBC失败,Windows 7 ODBC失败,Linux的DataStage客户端失败,Visual Studio 2017数据连接也失败。下面是适用于其他服务器的示例.Net代码(C#),但我遇到问题的服务器除外: [TestCase(true)] [TestCase(false)]

我已经做了11个小时了,但我还是不明白。它最初是一个JAVA连接问题,但此时我能够确认,唯一能够连接到远程SQL Server实例的工具是SQL Server Management Studio。JDBC失败,Windows 7 ODBC失败,Linux的DataStage客户端失败,Visual Studio 2017数据连接也失败。下面是适用于其他服务器的示例.Net代码(C#),但我遇到问题的服务器除外:

    [TestCase(true)]
    [TestCase(false)]
    public void TestMethod(bool encrypt)
    {
        var sscsb = new SqlConnectionStringBuilder {
            DataSource = $"{server}\\{instance},{port}",
            NetworkLibrary = "dbmssocn",
            PacketSize = 4096,
            InitialCatalog = database,
            IntegratedSecurity = false,                
            UserID = user,
            Password = password,
            Encrypt = encrypt,
            TrustServerCertificate = true,                
        };
        try
        {
            using (var conn = new SqlConnection(sscsb.ConnectionString))
            {
                conn.Open();
            }
            Assert.Pass("Connected");
        }
        catch (Exception e)
        {
            Assert.Fail(e.Message);
        }
    }
尝试从此测试类连接时返回的错误很简单:

消息:用户“etldsg”登录失败。

在JAVA中,根据TLS设置的组合(请注意,登录总是使用自签名证书进行加密),有时我会得到以下结果:

驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接。错误:“SQL Server未返回响应。连接已关闭。ClientConnectionId:37dc2f52-c952-4f50-8fc9-62c3bdd84041”。

我知道JAVA不支持DHE密码

忽略不支持的密码套件:TLS\u DHE\u DSS\u和\u AES\u 256\u GCM\u SHA384
忽略不支持的密码套件:TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
忽略不支持的密码套件:TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
忽略不支持的密码套件:TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
忽略不支持的密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
忽略不支持的密码套件:TLS_RSA_WITH_AES_256_CBC_SHA256
忽略不支持的密码套件:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
忽略不支持的密码套件:TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
忽略不支持的密码套件:TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
忽略不支持的密码套件:TLS_RSA_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
忽略不支持的密码套件:TLS_RSA_WITH_AES_128_GCM_SHA256
忽略不支持的密码套件:TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_RSA_WITH_AES_256_GCM_SHA384
忽略不支持的密码套件:TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
忽略不支持的密码套件:TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
忽略不支持的密码套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
忽略不支持的密码套件:TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
忽略不支持的密码套件:TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
忽略不支持的密码套件:TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
忽略不支持的密码套件:TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
忽略不支持的密码套件:TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
忽略不支持的密码套件:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
忽略不支持的密码套件:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

在这一点上,我不能要求服务器管理员遵循Microsoft的建议和


所以,我被卡住了。有人见过类似的东西吗?您是如何解决的?

首先检查网络上服务器之间的路由是否打开


如果是,这是另一个问题,您可以让管理员查看SQL Server实例上的TCP/IP协议是否处于活动状态。您可以通过在服务器上打开SQL Server Configuration Manager并检查网络协议来执行此操作。

用户ETLDSG在数据库引擎上是否有工作帐户?是的,正如我所提到的,我可以很好地连接SSMS。相同的用户,相同的密码,相同的一切。SSM不使用不同的网络库吗?也许这个答案适用于你的问题:不,我也强迫你这么做。只是为了确定一下。另外,当我查看JAVA中的TLS调试时,它确实显示了正在进行的连接尝试,当我将TLSv1用于sslProtocol时。这并不能解释为什么SSMS可以工作,但其他的不能。感谢您的贡献。我可以连接到服务器正在侦听的端口,所以这不是路由问题。