gpt4 book ai didi

java - 如何使用 JDBC 连接到 SQL Server

转载 作者:行者123 更新时间:2023-11-29 03:24:43 25 4
gpt4 key购买 nike

我正在使用 Microsoft SQL Server 2008 并尝试使用 JDBC 连接到数据库。下面是我的代码。用户名和密码使用 Windows 身份验证。

String url1 = "jdbc:sqlserver://ServerName;databaseName=v14testvp;user=USERNAME;password='';";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
DriverManager.getConnection(url1);

我在尝试连接时遇到错误

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'USERNAME'. ClientConnectionId:befb617f-8382-4388-ad98-a210ed0c3105

谁能帮我看看要检查什么来解决错误。我尝试在我的 url1 字符串中同时填写用户名和密码,但我得到了同样的错误。我也尝试过在用户名中包含域 (domain\USERNAME)。我对 sql 和 java 比较陌生,所以希望我只是遗漏了一些简单的东西。

编辑:

我将代码更改为以下

String url1 = "jdbc:sqlserver://servername;databaseName=v14testvp;integratedSecurity=true;authenticationScheme=JavaKerberos";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
DriverManager.getConnection(url1);

我现在收到以下错误。我有 sqljdbc_auth.dll。有人可以为我指出正确的方向来解决这个问题吗?

com.microsoft.sqlserver.jdbc.SQLServerException: Integrated authentication failed. ClientConnectionId:0e66f60e-958c-4c8e-85b9-484023f16ecf at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667) at com.microsoft.sqlserver.jdbc.KerbAuthentication.intAuthInit(KerbAuthentication.java:140) at com.microsoft.sqlserver.jdbc.KerbAuthentication.GenerateClientContext(KerbAuthentication.java:268) at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2691) at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234) at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.ibm.atmn.tests.DumbyClass.DumbyTests(DumbyClass.java:52) Caused by: javax.security.auth.login.LoginException: Unable to obtain Princpal Name for authentication

最佳答案

不要将 authenticationScheme=JavaKerberossqljdbc_auth.dll 一起使用。如果您有 DLL,则省略身份验证方案,您将以用户登录 Windows 的方式进行连接。

如果您想以不同的用户身份连接或者您不在 Windows 上,那么您可以指定 authenticationScheme=JavaKerberos。为此,您需要提供以下系统属性:

  • -Djava.security.auth.login.config=???
  • -Djava.security.krb5.conf=???

另见 Oracles documentation about Kerberos Requirements .

关于java - 如何使用 JDBC 连接到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com