2015-06-18 12 views
9

Hej, mam problemy z połączeniem się z serwerem SQL z kodem Java działającym pod Linuksem.Nawiązanie połączenia z serwerem SQL z systemu Linux za pośrednictwem interfejsu JDBC za pomocą funkcji integratedSecurity (uwierzytelnianie systemu Windows)?

Jeżeli ustawić integratedSecurity = true, wówczas kod Java nie powiedzie się z powodu następującego błędu:

WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path 
com.microsoft.sqlserver.jdbc.SQLServerException: This driver is not configured for integrated authentication. ClientConnectionId:b030b480-453d-4007-8151-a552150f74cd 

Jaki sens jak nie będzie plik sqljdbc.dll na Linuksie.

Ale jeśli ustawić integratedSecurity = false, wówczas pojawia się następujący błąd:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'IT_DEV_USER'. 

Więc czy ktoś wie jak mogę połączyć się z SQL Server z integratedSecurity ustawiona na false? (Zauważ, że nie mogę nawet połączyć gdy kod Java jest uruchomiony w systemie Windows, gdy integratedSecurity jest ustawiona na false.

Jeśli nie, to czy jest jakiś sposób mogę uzyskać integratedSecurity działa na Linux?

Odpowiedz

-2

nie można używać Funkcja integratedSecurity z systemu Linux, ponieważ jest związana z systemem Windows i używa uwierzytelniania systemu Windows, jednak jeśli w serwerze SQL zostanie włączony tryb SQL Server i Windows Authentication, możesz utworzyć login, mapować do odpowiedniej bazy danych i używać go w java z systemu Linux:

Aby włączyć uwierzytelnianie SQL Server:

  1. Kliknij prawym przyciskiem myszy na serwerze w Management Studio
  2. Właściwości
  3. Zabezpieczenia
  4. uwierzytelniania
  5. Server -> SQL Server i Windows Authentication Mode
+0

Hej, próbowałem to i nadal nie działa. Jakieś pomysły? – fulhamHead

+1

Powinieneś być w stanie używać uwierzytelniania Kerberos wbudowanego w sterownik JDBC programu SQL Server. –

3

Jeśli chcesz użyć zintegrowanych zabezpieczeń i używając sterownika JDBC 4.0 lub więcej, dodajesz następujące informacje w swoim ciągu połączenia jdbc.

integratedSecurity=true;authenticationScheme=JavaKerberos 

Więcej informacji: http://blogs.msdn.com/b/psssql/archive/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication.aspx

+2

Czy udało się to zrobić? Otrzymuję komunikat Nie można uzyskać nazwy głównej dla błędu uwierzytelnienia ... – fulhamHead

+0

Spróbuj podać nazwę instancji, powinna to naprawić. https://msdn.microsoft.com/en-us/library/ms378428.aspx –

+1

Z tego co wiem, samo dodanie, że Kerberos musi być użyty, nie jest wystarczające: musisz mieć poprawnie skonfigurowane Kerberos i musisz mieć bilet na kerberos od AD. –

0

Dodawanie authenticationScheme=JavaKerberos działa na mnie w Linuksie, ale upewnij się, aby usunąć integratedSecurity=true ponieważ nie używasz systemu Windows.

0

Jeśli nie chcesz połączenia Integrated Security, a następnie ustawić ten parametr na false i zamiast dostarczać użytkownika i hasło w connURL jak poniżej:

String connectionUrl = "jdbc:sqlserver://localhost:port;databaseName=DB_NAME;integratedSecurity=false;user=login_user;password=login_pwd;"; 
Powiązane problemy