当前位置: 首页 > 面试题库 >

将SQL Server 2008连接到Java:用户错误登录失败

秦禄
2023-03-14
问题内容

我正在尝试将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文件夹->
Logins文件夹下的Login文件夹来创建新的登录名,并添加了新的登录名。我给它起了名字jhaip2,切换到SQL
Server身份验证,并将密码设置为jacob。未选中强制密码策略和强制密码到期。默认数据库设置为TestDB1。然后在TestDB1->
Secuity-> Users-> jhaip2->
Database角色成员下,将jhaip2设置为db_owner(如果不执行此操作,我将无法登录到Management
Studio中的数据库,这可能不正确吗?)。然后,我重新启动了服务器

现在对于我的Java代码,除了没有Windows身份验证外,它基本上是JDBC Driver 3.0示例代码的直接副本。

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数据库的任何指导,我将不胜感激。


问题答案:

当我查看SQL Server日志文件时,它说我无法登录,因为SQL Server处于Windows身份验证模式,即使在程序中将其设置为混合身份验证模式。

安装时,我已将其设置为Windows身份验证模式,但是更改程序中的设置不会将其从Windows身份验证模式更改。

我从计算机上删除了SQL Server 2008和所有相关程序,并安装了新副本,这次是使用SQL Server身份验证。现在一切正常。我不知道为什么SQL
Server在更改身份验证模式时会遇到问题,但是现在可以正常工作,所以我很高兴。



 类似资料:
  • 我使用cakephp2.1和我在UsersController中使用登录操作如下。 和登录名。ctp代码如下。 当使用电子邮件和密码提交表单时,用户无法登录,因此显示错误“无效电子邮件或密码,请重试”。就连我都把这美元给递了-

  • jdbc:sqlserver://localhost:1433;数据源=(本地);初始目录=MarketDataDB;用户id=andrew;密码=myPassode; 上面是我使用JDBC连接到SQL Server 2008 R2 Express数据库时使用的连接字符串,但产生了以下错误: 用户“”的登录失败 有什么想法吗? 我可以使用指定的用户名和密码从SQL Server Managemen

  • 我正在运行一个kubernetes集群,在其中按照kubernetes hazelcast github页面上的说明部署一个“云原生hazelcast”。一旦运行了许多hazelcast实例,我就会尝试将java客户端连接到其中一个实例,但由于某种原因,连接失败。 使用kubernetes外部endpoint,我可以从kubernetes集群外部连接到hazelcast。当我使用curl-kube

  • 问题内容: 我无法摆脱这个错误。我已经通过SSMS添加了“ NT AUTHORITY \ NETWORK”用户以及使用此线程作为参考的相关角色:用户“ NT AUTHORITY \ NETWORKSERVICE”的登录失败 我试图通过Windows服务建立数据库连接。在调试模式下,数据库连接可以正常工作。当我实际尝试运行已安装的服务时,便会出现此错误。 这是我来自app.config的连接字符串:

  • 我在Azure App服务上有一个Spring web应用程序,它使用Microsoft JDBC驱动程序连接到Azure SQL DB,并使用访问令牌进行身份验证。它最初可以工作,但过了一段时间后,我开始得到SQLServerException:登录失败,用户'NT Authority\Anonymous Logon' 我正在遵循MS文档中概述的步骤。 com.microsoft.sqlserv