无法与 SQL Server 建立多个 JDBC 连接

阿苏布

我正在尝试在本地 SQL Server 上加载测试一些纯 SQL 查询(我不确定这是测试性能的最佳方式,但这会给我一个粗略的估计)。我正在为 SQL Server 使用 Java 的 PreparedStatement 和 MS JDBC,并且我实例化了一百个线程Connection,每个线程中都有一个新线程

我已经安装了 SQL Server Express 版本 (11.0.210)。不幸的是,Express 版不会并行运行多个查询(Pro 版也是如此),所以我的测试不会很有用。

一位同事告诉我我可以使用 SQL Developer 2014。我在设置它时遇到了一些困难,所以我可能忘记了一些东西。我开始使用它与 sysadmin (sa) 帐户。

Connection使用 JDBC制作单曲并查询按预期工作。


现在,我正在尝试创建两个Connection

String SQLSERVER_CONNECTION_STRING = "jdbc:sqlserver://localhost\\SQLDEVELOPPER:55372";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection c1 = DriverManager.getConnection(SQLSERVER_CONNECTION_STRING, USER, USER_PWD);
Connection c2 = DriverManager.getConnection(SQLSERVER_CONNECTION_STRING, USER, USER_PWD);

首先我收到这条消息stderr

nov. 08, 2017 10:41:00 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
AVERTISSEMENT: ConnectionID:1 ClientConnectionId: bfb1d22d-a5fb-4f74-9be8-60fb91c9d701 Prelogin error: host localhost port 55372 Error reading prelogin response: Software caused connection abort: recv failed ClientConnectionId:bfb1d22d-a5fb-4f74-9be8-60fb91c9d701

并得到这个错误 16 次:

nov. 08, 2017 10:41:01 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
AVERTISSEMENT: ConnectionID:1 ClientConnectionId: fcd64c62-ba9a-48ee-b195-11307e7bad30 Prelogin error: host localhost port 55372 Error reading prelogin response: Une connexion existante a dû être fermée par l’hôte distant ClientConnectionId:fcd64c62-ba9a-48ee-b195-11307e7bad30

翻译:“一个现有的连接必须被远程主机关闭”(我首先读它为“一个现有的连接可能已被远程主机关闭”,但正如@fab 的评论指出的那样,这可能是错误的)

然后这个堆栈跟踪:

Exception in thread "main" java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException: Une connexion existante a dû être fermée par l’hôte distant ClientConnectionId:0fa4b1cb-ae03-407a-bcc3-54a0cd85005c
    at fr.aso.sandbox.utils.SQLServerConnectionManager.getConnection(SQLServerConnectionManager.java:24)
    at fr.aso.sandbox.myComp.myComp.test.KeycopterTest.doubleConnectionThreadTest(KeycopterTest.java:78)
    at fr.aso.sandbox.myComp.myComp.test.KeycopterTest.main(KeycopterTest.java:49)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Une connexion existante a dû être fermée par l’hôte distant ClientConnectionId:0fa4b1cb-ae03-407a-bcc3-54a0cd85005c
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2397)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2384)
    at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1884)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.Prelogin(SQLServerConnection.java:2137)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1973)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at fr.aso.sandbox.utils.SQLServerConnectionManager.getConnection(SQLServerConnectionManager.java:22)
    ... 2 more

我找到了关于此的问题和答案,但对于大多数问题和答案,它们都是关于单个连接不起作用。

在这里,当我尝试与同一用户进行 2 个或更多连接时会出现问题,因此我排除了“未启用 TCP”和“防火墙阻止 sql server”问题。

SQL Developer 版本是:

Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) 
    Jun 17 2016 19:14:09 
    Copyright (c) Microsoft Corporation
    Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

因为我可以在 SQL Express 上多次建立相同的连接,所以我相信这是一个 SQL Server 配置问题,但找不到任何相关的东西。

我在某处错过了什么吗?有没有办法获得更明确的错误?

阿苏布

实际上错误日志中有更详细的错误:

2017-11-09 18:13:01.85 Logon       Error: 17810, Severity: 20, State: 2.
2017-11-09 18:13:01.85 Logon       Could not connect because the maximum number of '1' dedicated administrator connections already exists. Before a new connection can be made, the existing dedicated administrator connection must be dropped, either by logging off or ending the process. [CLIENT: 127.0.0.1]

如果您不知道数据库的错误日志在哪里,请在 SSMS -> 属性 -> 数据库设置中右键单击它,在数据库默认位置下,“日志:路径/到/您的/日志/”。

环顾四周,找不到如何与 sysadmin 用户建立多个连接,感觉不可能(即使我在 SQL Server Express 版本上这样做,也可能没有以相同的方式配置或“sa”用户不是真正的系统管理员,或者它是单线程的事实阻止了实际打开多个连接)。

作为解决方案,我将尝试创建一个不是类似 sysadmin 的用户。

如果您最终遇到了非 sysadmin-like 用户的问题,请尝试使用 sp_configure 'user connections', 0,如果您在单个连接中遇到原始错误,请检查是否启用了 TCP

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Spring MVC中建立JDBC连接

来自分类Dev

无法在Windows 7上使用pyodbc建立与sql-server的连接

来自分类Dev

无法从Eclipse建立到Hive的JDBC连接

来自分类Dev

使用JDBC的SQL Server连接-JTDS

来自分类Dev

JDBC,连接到SQL Server

来自分类Dev

无法建立JDBC连接

来自分类Dev

无法建立与SQL Server数据库的连接

来自分类Dev

无法使用JDBC连接到Sql Server数据库

来自分类Dev

SpringXD 1.1.0- SQL SERVER的JDBC源连接问题

来自分类Dev

无法与PostgreSQL建立JDBC连接

来自分类Dev

JDBC连接到SQL Server使用动态TCP端口

来自分类Dev

pyspark jdbc连接到SQL Server时出错

来自分类Dev

无法在Spring MVC中建立JDBC连接

来自分类Dev

jdbc错误,无法连接到sql

来自分类Dev

建立与SQL Server的连接时出错

来自分类Dev

来自Java jdbc连接的架构名称Sql Server

来自分类Dev

JDBC,连接到SQL Server

来自分类Dev

SQL Server安全JDBC连接,而无需为安全连接重新配置SQL Server

来自分类Dev

测试与SQL Server的多个连接

来自分类Dev

Java Spring JDBC SQL Server连接错误

来自分类Dev

JDBC网络适配器无法建立连接/连接重置/接收失败

来自分类Dev

JDBC-无法远程连接到MySQL Server

来自分类Dev

多个用户的SQL Server连接

来自分类Dev

无法通过JDBC连接到SQL Server。找不到适用于jdbc:sqlserver://的驱动程序

来自分类Dev

通过jdbc配置/创建与SQL Server实例的PowerCenter连接

来自分类Dev

连接到 SQL Server for PHP:无法建立连接

来自分类Dev

SQL Server 连接多个 Select

来自分类Dev

JDBC 无法建立到 SQL Server 的 SSL 连接 (Domino Java Agent FP 9)

来自分类Dev

无法使用 Spring JDBC 通过 SSL 连接到 SQL Server

Related 相关文章

热门标签

归档