【问题标题】:Java JDBC cannot connect to MSSQL ServerJava JDBC 无法连接到 MSSQL Server
【发布时间】:2014-02-13 10:56:21
【问题描述】:

我尝试了很多方法来解决我的问题,但都没有奏效,所以我在这里提出问题。我使用 SQL Server Management Studio 创建了一个本地数据库。它的名字是 CallCenter,我为它创建了一个用户帐户,授予了所有权限,我可以用它登录数据库,在 Managemenet Studio 中,一切正常。

现在我使用 NetBeans 创建连接。我下载了 Microsoft JDBC 驱动程序,设置了一切,JDBC 似乎工作正常。问题是,它无法连接到数据库。我将登录选项设置为 Windows 和 SQL。我尝试使用集成的 sequrity(windows 帐户)以及创建的(和工作的)SQL 用户帐户登录。

它们都不起作用,我不断收到此异常:

com.microsoft.sqlserver.jdbc.SQLServerException: 用户登录失败 '行政'。 ClientConnectionId:1ce0b951-5ecb-49b4-a4d0-ff4a96af4ed2 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)......

代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Try {

    public static void main(String[] args) {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String url="jdbc:sqlserver://localhost:1434;databaseName=CallCenter;integratedSecurity=true;";
            Connection conn = DriverManager.getConnection(url);        
        } catch (ClassNotFoundException e) {
            System.err.println("SQL Driver class does not exist!");
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

我已经浏览了几个小时的互联网,尝试了很多解决方案,但没有一个能为我解决这个问题。请帮帮我!

【问题讨论】:

  • 检查凭证用户名/密码
  • 这里一般Connection conn = DriverManager.getConnection(url);主要是在使用其他2个参数-用户+密码-Connection conn = DriverManager.getConnection(url, user, pass);

标签: java sql sql-server jdbc connection


【解决方案1】:

异常几乎说明了一切 - 使用数据库检查您的凭据(显然您没有提供)。

【讨论】:

    【解决方案2】:

    您收到的Login failed for user 'admin' 错误是一个明确的指示
    您的登录请求已到达 SQL 服务器,但您的凭据错误。
    所以要么您的用户名或密码错误,要么此登录名不正确
    配置为远程登录到 SQL 服务器。检查服务器上的配置。

    【讨论】:

    • 好吧,正如我所说,我肯定得到了正确的用户名和密码,当我从 Studio 登录时它就可以工作。我仔细检查了它们,它们匹配。在 Studio 中,我右键单击我的服务器,并将所有权限授予管理员用户。还是不行。我在哪里可以配置这个远程登录的东西?也许还有其他想法?谢谢你们的帮助!
    • 当您从运行 Java 代码的同一台机器上的工作室登录时,它可以工作吗?
    • 是的,是同一台机器!
    • 发布一些截图。您是使用 SQL 服务器身份验证登录还是使用 Windows 身份验证登录?另请参阅 nazar_art 的评论。
    • Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");字符串 url= "jdbc:sqlserver://localhost:1434;instance=MSSQLSERVER; databaseName=CallCenter;integratedSecurity=false;";连接连接 = DriverManager.getConnection(url,"acc","pass");我改成这个版本的连接,还是不行。我不断收到同样的错误。您希望我发布什么样的屏幕截图? Studio 使用相同的登录名(我更改了 acc 并通过了评论)。
    【解决方案3】:

    使用DriverManager 的另一种方法来获取使用凭据的连接。

    当您有integratedSecurity=True、read this 时,可以进一步了解它的实际含义。它使用您的 Windows 凭据进行登录(使用 SQL Server)。 因此,将其设为 false 并为数据库提供凭据。

    供您参考read this

    [编辑]

    尝试使用它而不是integratedSecurity。

    jdbc:sqlserver://HOSP_SQL1.company.com;user=name;password=abcdefg;database=Test

    【讨论】:

    • 是的,我按照我说的尝试过,我只是复制了集成安全版本。还是不行。
    猜你喜欢
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多