将SQL Server 2008连接到Java:由于用户错误而登录失败
我正在尝试将Java代码连接到Microsoft SQL Server 2008 R2 Express数据库。我已经下载了MicrosoftSQLServerJDBC驱动程序3.0,并将sqljdbc4.jar添加到我的类路径中。我正在使用Netbeans,并且在我的项目中也包含了sqljdbc4.jar 我在SQLServerManagementStudio中创建了一个名为TestDB1的数据库,并添加了一些用于测试的列和值。通过右键单击服务器JACOB=PC\SQLEXPRESS->Properties->Secuity并从Windows身份验证模式更改为SQL server和Windows身份验证模式,我改变了Windows身份验证模式 然后,我右键单击窗口资源管理器中JACOB-PC/SQLEXPRESS->Secuity folder->Logins文件夹下的login文件夹,创建了一个新登录名,并添加了一个新登录名。我给它取名为jhaip2,切换到sqlserver身份验证,并将密码设置为jacob。未选中强制密码策略和强制密码过期。默认数据库设置为TestDB1。然后在TestDB1->Secuity->Users->jhaip2->Database role membership下,我将jhaip2设置为db_owner(如果不这样做,我就无法登录到management studio中的数据库,这可能不是正确的做法?)。然后我重新启动了服务器 现在对于我的java代码,它基本上是JDBC驱动程序3.0示例代码的直接副本,除了没有windows身份验证之外将SQL Server 2008连接到Java:由于用户错误而登录失败,java,sql,sql-server,sql-server-2008,jdbc,Java,Sql,Sql Server,Sql Server 2008,Jdbc,我正在尝试将Java代码连接到Microsoft SQL Server 2008 R2 Express数据库。我已经下载了MicrosoftSQLServerJDBC驱动程序3.0,并将sqljdbc4.jar添加到我的类路径中。我正在使用Netbeans,并且在我的项目中也包含了sqljdbc4.jar 我在SQLServerManagementStudio中创建了一个名为TestDB1的数据库,并添加了一些用于测试的列和值。通过右键单击服务器JACOB=PC\SQLEXPRESS->Prop
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) {}
}
}
}
当我运行时,它会打印出“驱动程序正常”,所以我假设我的驱动程序设置正确。然后打印错误:
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'jhaip2'.
不管我使用什么用户名,它总是失败。我有一种感觉,我设置的用户是错误的。如果有人能给我一些关于如何正确设置用户的帮助或关于如何简单地连接到Java中的SQL Server数据库的指导,我将不胜感激。其他问题是否也可能是相同的问题:
您必须确保SQL Server正在侦听正确的端口,然后才能使用JDBC通过TCP连接进行连接。当我查看SQL Server日志文件时,它说我无法登录,因为SQL Server处于Windows身份验证模式,即使在程序中设置为混合身份验证模式 安装时,我已将其设置为Windows身份验证模式,但更改程序中的设置不会将其从Windows身份验证模式更改 我从我的计算机上删除了SQL Server 2008和所有相关程序,并安装了一个新的副本,这次使用了SQL Server身份验证。现在一切正常。我不知道为什么SQL Server在更改身份验证模式时出现问题,但它现在可以工作了,所以我很高兴
CREATE LOGIN aaron792 WITH PASSWORD='12345'
USE BudgetAuthorization
CREATE USER aaron792
我用aaron792你应该用你的
然后重新启动每件事,确保它正在运行。然后试试你的代码我遇到了同样的问题。谢谢你,jhaip,为我指明了正确的方向:SQL Server处于Windows身份验证模式
我只想补充一点,没有必要重新安装SQL server和所有相关程序。只需要更改身份验证模式。查看此答案以了解更多详细信息:我知道这已经得到了回答,但我想稍微改变一下而不必重新安装整个
SQLSERVER
RDBMS。
其概念是更改您尝试连接到的sqlserver实例的属性
sqlmanagementstudio
并从对象资源管理器中选择sqlserver实例
- 右键单击实例并从弹出菜单中选择properties,弹出菜单将打开服务器属性窗口
- 选择页面右侧的安全选项。然后将服务器身份验证从
更改为Windows身份验证模式
李>SQL server和Windows身份验证模式(混合模式)
- 然后选择
选项。然后在选择权限的情况下,选择要授予权限的登录帐户。(在此之前应创建登录帐户,请查看本教程。版本可能与您拥有的版本不同,但概念或工作流程保持不变。)。在“权限”下,选择“明确的”选项卡,在“授予”下,选择所有选项权限
- 单击“确定”
- 打开/启动SQLSERVER配置管理器
- 从左窗格中选择
SQL SERVER服务
- 选中该选项后,移动到右侧窗格,右键单击
选项,然后从弹出菜单中选择属性李>SQL Server(MSSQLSERVER)
- SQL Server(MSSQLSERVER)属性窗口出现,确保选择了
选项卡,然后在登录
选项下选择名为登录为:
的单选按钮。然后从组合框中选择,内置帐户
李>本地系统
- 单击“确定”。单击ok,您将被要求重新启动实例,继续重新启动它。如果未要求重新启动,则转至下面的第三步
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2
GO