Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JDBC连接到SQL Server_Java_Sql Server_Jdbc - Fatal编程技术网

Java 如何使用JDBC连接到SQL Server

Java 如何使用JDBC连接到SQL Server,java,sql-server,jdbc,Java,Sql Server,Jdbc,我正在使用MicrosoftSQLServer2008,并尝试使用JDBC连接到数据库。下面是我的代码。用户名和密码使用Windows身份验证 String url1 = "jdbc:sqlserver://ServerName;databaseName=v14testvp;user=USERNAME;password='';"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); DriverManage

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

String url1 = "jdbc:sqlserver://ServerName;databaseName=v14testvp;user=USERNAME;password='';";
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    DriverManager.getConnection(url1);
我在尝试连接时遇到了blow错误


com.microsoft.sqlserver.jdbc.SQLServerException:用户“USERNAME”登录失败。客户连接ID:befb617f-8382-4388-ad98-a210ed0c3105

有人能帮我检查什么来解决错误吗。我尝试在我的url1字符串中填写用户名和密码,但我得到了相同的错误。我还尝试在用户名(域\用户名)中包含域。我对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:集成身份验证失败。客户连接ID:0e66f60e-958c-4c8e-85b9-484023f16ecf
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667) 位于com.microsoft.sqlserver.jdbc.KerbAuthentication.intAuthInit(KerbAuthentication.java:140) 位于com.microsoft.sqlserver.jdbc.KerbAuthentication.GenerateClientContext(KerbAuthentication.java:268)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2691)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220) 位于com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
位于com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
位于com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) 位于java.sql.DriverManager.getConnection(未知源) 位于java.sql.DriverManager.getConnection(未知源) 位于com.ibm.atmn.tests.DumbyClass.DumbyTests(DumbyClass.java:52) 原因:javax.security.auth.login.login异常:无法获取用于身份验证的Princpal名称


使用Windows身份验证连接到SQL Server时,不能使用用户名和密码(请参见示例)。相反,您需要指定
integratedSecurity=true
,并且根据驱动程序版本和首选项,您需要使用Kerberos身份验证(并在连接字符串中包含
authenticationScheme=JavaKerberos
)或加载正确的
sqljdbc\u auth.dll


请参阅和

您不能将
authenticationScheme=JavaKerberos
sqljdbc\u auth.dll
一起使用。如果您有DLL,则不使用身份验证方案,您将在用户登录Windows时进行连接

如果您希望以其他用户身份连接,或者您不在Windows上,则可以指定
authenticationScheme=JavaKerberos
。为此,您需要提供以下系统属性:

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

另见

您必须设置与kerberos相关的java属性

1) 登录文本配置文件 默认情况下,microsoft会为您配置,这是可选的。但如果您想控制更多行为,则必须深入了解详细信息。

2) kerberos配置 a) 使用外部配置,然后传递给java b) 直接使用java属性设置 比如System.setProperty(“java.security.krb5.realm”,“strong>”;
System.setProperty(“java.security.krb5.kdc”,)

com.microsoft.sqlserver.jdbc.SQLServerException:用户“USERNAME”登录失败。1) 确保用户名/密码正确。2) 如果您是从远程计算机访问,请确保远程访问granted@Nambari-用户名/pwd正确,远程访问正确granted@TestRaptor你找到解决问题的办法了吗?谢谢。我编辑了我的原始问题。你能看看我的新错误吗?如果你想使用sqlauth,那么你应该删除authenticationScheme属性或者给它一个合适的值(请参阅我答案中的第二个和第三个链接)。