簡體   English   中英

如何使用JDBC連接到SQL Server

[英]How to connect to SQL Server using JDBC

我正在使用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:用戶'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:集成身份驗證失敗。 位於com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)處com.microsoft.sqlserver.jdbc.KerbAuthentication.intAuthInit(KerbAuthentication.java:140)處的ClientConnectionId:0e66f60e-958c-4c8e-85b9-484023f16ecf com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2691)上的com.microsoft.sqlserver.jdbc.KerbAuthentication.GenerateClientContext(KerbAuthentication.java:268)(com.microsoft.sqlserver.jdbc.SQLServerConnection.logon( com.microsoft.sqlserver.jdbc.SQLServerConnection.access $ 000(SQLServerConnection.java:41)處的com.microsoft.sqlserver.jdbc.SQLServerConnection $ LogonCommand.doExecute(SQLServerConnection.java:2220)處的SQLServerConnection.java:2234)。位於com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)處的microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)位於com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection。 java:1326)在com.micr osoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)位於com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)位於com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver。 com.ibm.atmn.tests.DumbyClass.DumbyTests(DumbyClass.java:52)處java.sql.DriverManager.getConnection(未知源)處java.sql.DriverManager.getConnection(未知源) javax.security.auth.login.LoginException:無法獲取用於身份驗證的主要名稱

您不要將authenticationScheme=JavaKerberossqljdbc_auth.dll一起使用。 如果您具有DLL,則省略身份驗證方案,然后在用戶登錄Windows時進行連接。

如果要以其他用戶身份連接或不在Windows上,則可以指定authenticationScheme=JavaKerberos 為此,您需要提供以下系統屬性:

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

另請參閱有關Kerberos要求的Oracle文檔

您必須設置與kerberos相關的java屬性

1)loginContext配置文件默認情況下,Microsoft為您配置了此文件,這是可選的。但是,如果要控制更多有關該行為的信息,則必須深入研究其詳細信息。 https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html

2)Kerberos配置a)使用外部配置然后傳遞給java b)直接使用java屬性進行設置,例如System.setProperty(“ java.security.krb5.realm”,“ ”); System.setProperty(“ java.security.krb5.kdc”,

使用Windows身份驗證連接到SQL Server時,不能使用用戶名和密碼(例如,參見此答案 )。 相反,您需要指定integratedSecurity=true並且根據驅動程序版本和首選項,您需要使用Kerberos身份驗證(並在連接字符串中包含authenticationScheme=JavaKerberos )或加載正確的sqljdbc_auth.dll

請參閱使用Kerberos集成身份驗證連接到SQL Server構建連接URL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM