SQL Server 2014 jdbc 访问

Posted

技术标签:

【中文标题】SQL Server 2014 jdbc 访问【英文标题】:SQL Server 2014 jdbc access 【发布时间】:2018-01-15 11:27:22 【问题描述】:

您好,我正在尝试使用 jdbc 连接到 SQL 2014(Talend V6.4 或 Squirrel 给出相同的错误)

尝试使用 sa 凭据连接到数据库(在 SQL Management Studio 上工作,所以这不是密码错误的问题),我收到连接错误,基本上说“sa”的访问没有成功(我没有更有意义的堆栈跟踪,如果有任何地方可以找到它,我很乐意发布它。

为了允许 JDBC 连接到该数据库,我应该要求我们的 dba 启用什么吗?

驱动版本:sqljdbc_6.2.2.0 JDK 1.8 Talend 版本 6.4.1 松鼠版 3.8.1

jdbc 网址

jdbc:sqlserver://SERVERNAME:1433;databaseName=PM

更新:

完整的堆栈跟踪

com.microsoft.sqlserver.jdbc.SQLServerException: Accesso non riuscito per l'utente 'sa'。 ClientConnectionId:ff3ce3cd-a6a8-49c4-81ef-91ff737d13f1 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258) 在 com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:256) 在 com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:108) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4290) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3157) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:82) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3121) 在 com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2026) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:569) 在 net.sourceforge.squirrel_sql.fw.sql.SQLDriverManager.getConnection(SQLDriverManager.java:133) 在 net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.executeConnect(OpenConnectionCommand.java:167) 在 net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand.access$000(OpenConnectionCommand.java:45) 在 net.sourceforge.squirrel_sql.client.mainframe.action.OpenConnectionCommand$1.run(OpenConnectionCommand.java:104) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

【问题讨论】:

请发布完整的异常堆栈跟踪,并包括使用的 JDBC-url。 是的,抱歉...添加了异常和 jdbc url 【参考方案1】:

最后发现,这一切都与客户对该 SQL 2014 所做的特定安装有关。看起来它在 1433 上工作......它在 1433 上为 MS 本机客户端工作,但实际上它被配置为使用动态的...所以我们必须配置 Squirrel 运行“无”端口,Talend 连接器在 51889(SQL Server 动态端口)上工作。

所以最后这只是配置问题和 SQL Server 发出的奇怪消息(非常感谢“不正确的端口:使用动态端口”之类的东西 :))

【讨论】:

以上是关于SQL Server 2014 jdbc 访问的主要内容,如果未能解决你的问题,请参考以下文章

NetBeans IDE 6.1怎么通过JDBC-ODBC桥访问数据库sql server 2000

在没有 VIEW SERVER STATE 权限的情况下查找 SQL Server 2014 中最常访问的表

jdbc连接sql Server 数据库时用的数据库名是指实例名吗?

我使用flex 通过RemoteObject与java交互,java访问SQL Server2005,但是总是返回NaN。

Java访问sql server数据库工具

与 sql server 2014 的无效对象名称 jdbc 连接