java - 将 SQL Server 2008 连接到 Java : Login failed for user error

标签 java sql sql-server sql-server-2008 jdbc

我正在尝试将我的 Java 代码连接到 Microsoft SQL Server 2008 R2 Express 数据库。我已经下载了 Microsoft SQL Server JDBC Driver 3.0 并将 sqljdbc4.jar 添加到我的类路径中。我正在使用 Netbeans,并且还在我的项目中包含了 sqljdbc4.jar。

我在 SQL Server Management Studio 中创建了一个名为 TestDB1 的数据库,并添加了一些我将用于测试的列和值。我通过右键单击服务器 JACOB=PC\SQLEXPRESS->Properties->Secuity 并将 Windows 身份验证模式更改为 SQL Server 和 Windows 身份验证模式,从 Windows 身份验证模式更改。

然后,我通过在 JACOB-PC/SQLEXPRESS->Secuity Folder->Logins 文件夹下的窗口资源管理器中右键单击 Login 文件夹创建了一个新的登录名,并添加了一个新的登录名。我给它取名为 jhaip2,切换到 SQL Server 身份验证并将密码设置为 jacob。未选中强制密码策略和强制密码过期。默认数据库设置为 TestDB1。然后在 TestDB1->Secuity->Users->jhaip2->Database role membership 下,我将 jhaip2 设置为 db_owner(如果不这样做,我无法登录管理工作室中的数据库,这可能不是正确的做法?)。然后我重新启动了服务器。

现在对于我的 java 代码,它基本上是 JDBC Driver 3.0 Sample code 的直接副本,除了没有 windows 身份验证。

package databasetest1;

import java.sql.*;

public class connectURL {

   public static void main(String[] args) {

      // Create a variable for the connection string.
      String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=TestDB1;";

      // Declare the JDBC objects.
      Connection con = null;
      Statement stmt = null;
      ResultSet rs = null;

      try {
         // Establish the connection.
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         System.out.println("Driver okay");
         con = DriverManager.getConnection(connectionUrl,"jhaip2","jacob");
         System.out.println("Connection Made");

      }

      // Handle any errors that may have occurred.
      catch (Exception e) {
         e.printStackTrace();
      }
      finally {
         if (rs != null) try { rs.close(); } catch(Exception e) {}
         if (stmt != null) try { stmt.close(); } catch(Exception e) {}
         if (con != null) try { con.close(); } catch(Exception e) {}
      }
   }
}

当我运行时,它会打印出“Driver okay”,所以我假设我的驱动程序设置正确。然后打印错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'jhaip2'.

无论我使用什么用户名,它总是失败。我有一种感觉,我把用户设置错了。如果有人能给我一些关于如何正确设置用户的帮助或任何关于如何简单地连接到 Java 中的 SQL Server 数据库的指导,我将不胜感激。

最佳答案

  1. 通过选择您的数据库运行此查询

     CREATE LOGIN aaron792 WITH PASSWORD='12345'
     USE BudgetAuthorization
     CREATE USER aaron792
    

    我用 aaron792 你应该用你的

  2. 在 sql server management studio 中,转到对象资源管理器并右键单击 (local)(sql server xxx),然后转到属性,它将打开服务器属性,然后转到安全并将服务器身份验证模式从仅限 Windows 更改为sql server 或 windows(第二个选项)

     USE [master]
     GO
     EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2
     GO
    
  3. 在服务器属性中,转到权限并从登录名或规则列表中选择新创建的用户,然后在其下方检查显式规则中授予的所有选项

  4. 打开 SQL Server 配置管理器和 -> SQL Server 服务 在顶行 SQL Server 右键单击​​并打开属性,然后将内置帐户更改为本地系统

然后重新启动一切并确保它正在运行。然后试试你的代码

关于java - 将 SQL Server 2008 连接到 Java : Login failed for user error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6403636/

相关文章:

java - 是否可以使用并行流来执行这些循环?

java - Xtext中如何从INode获取资源?

php - 如果文本框为空,请选择选项并插入到表中

sql - 为多于一列选择最大值?

javascript - 如何在 JS 或 C# 中使用输入按钮更新 html 表格行的 SQL 数据?

sql-server - 如何使 power() 函数使用小数而不是整数?

sql-server - 使用 Azure DevOps 部署数据库期间出现错误 "The DELETE statement conflicted with the REFERENCE constraint"

java - 为什么我无法删除 Java 中的空格?

java - codechef 和 spoj 问题中使用模 10^9+7 的意义是什么?

mysql - 对 "ORDER BY"查询的顺序进行排序