# Integrierte Windows Authentifizierung mit SQL-Datenbank



## Kern (28. Okt 2014)

Hey Leute,

ich stehe mal wieder auf dem Schlauch und hoffe, dass mir einer von euch helfen kann.
Zu meinem Problem:
Ich habe ein kleines Frontend gebastelt das Eingaben von Usern entgegennimmt und diese dann in eine SQL-Datenbank schreibt. Aus Eclipse heraus funktioniert das alles auch einwandfrei, exportiere ich meinen Code nun aber in eine Jar-Datei so funktioniert die integrierte Windowsauthentifizierung mit der SQL-Datenbank nicht mehr ich bekomme folgenden Fehlermeldung

```
Okt 27, 2014 9:54:17 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit> WARNING:
Failed to load the sqljdbc_auth.dll cause : C:\Windows\System32\sqljdbc_auth.dll:Can't load 
IA 32-bit .dll on a AMD 64-bit platform com.microsoft.sqlserver.jdbc.SQLServerException: 
This driver is not configured for integrated authentication. 
ClientConnectionId:2c50faa5-a9ec-4536-982e-b5174466cfc2
```
Der Datenbanktreiber(sqljdbc4.jar) liegt im richtigen Verzeichnis. Wenn ich jetzt aber die sqljdbc_auth.dll in das gleiche Verzeichnis packe funktioniert das nicht.
In verschiedenen Foren hab ich gelesen das ich den Classpath anpassen muss aber wenn ich diesen auf das "neue" Verzeichnis setzte findet er die sqljdbc4.jar, also den Datenbanktreiber wieder nicht mehr.
Mein Classpath sieht momentan so aus:

```
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src"/>
	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
		<attributes>
			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="C:/**PATH**/workspace/Microsoft JDBC Driver 4.0 for SQL Server/sqljdbc_4.0/enu/auth/x86"/>
		</attributes>
	</classpathentry>
	<classpathentry exported="true" kind="lib" path="C:/**PATH**/sqljdbc4.jar"/>
	<classpathentry exported="true" kind="lib" path="C:/eclipse/jdom-2.0.5/jdom-2.0.5.jar"/>
	<classpathentry kind="output" path="bin"/>
</classpath>
```
Was muss ich mit der sql_auth.dll  bzw. mit dem Classpath machen, dass das funktioniert?
Ich muss eherlich sagen, dass ich bestimmt langsam den Wald vor lauter Bäumen nicht mehr sehe und mir irgendein Leichtsinnsfehler unterlaufen ist. 
Hoffentlich kann mir einer von euch helfen.
Viele Grüße


----------



## Kevin94 (28. Okt 2014)

Das Problem schein zu sein, dass du versuchst eine 32bit Dll mit einer 64Bit JVM zu laden. In Eclipse ist vermutlich die 32Bit Version eingetragen, während der Autostart per Doppelklick bzw. die PATH-Variable auf die 64Bit Installation zeigt.
Ich kenn mich mit der xml Konfiguration des Classpaths in Eclipse zwar nicht gut aus, aber wenn die Pfade so in der jar landen dann ist das nicht gut. Im Manifest eines .jar sollten niemals absolute Pfade angegeben sein, sondern die Abhängigkeiten entweder in der .jar mit drin sein, oder in einem zusätzlichen Ordner enthalten sein (Eclipse bietet für beides automatische Optionen).


----------



## Kern (29. Okt 2014)

Danke für deine Antwort!
Zum ersten Punkt: Ich habe jetzt versucht in Eclipse die 64bit dll einzubinden mit Erfolg.

```
Okt 29, 2014 7:45:04 AM com.microsoft.sqlserver.jdbc.AuthenticationJNI <clinit>
WARNING: Failed to load the sqljdbc_auth.dll cause :
C:\Users\vs4513\workspace\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64\sqljdbc_auth.dll:
Can't load AMD 64-bit .dll on a IA 32-bit platform
```
Wenn ich das jetzt aber exprotiere bekomme ich aber die gleiche Fehlermeldung wie zuvor. Es wird demnach immernoch versucht dei 32bit dll zu laden.
Zum zweiten Punkt:
Ich kenne mich mit absoluten und relativen Pfaden bisher leider nicht genug aus aber das soll nicht das Problem sein. Habe mich jetzt zudem dafür entschieden die entsprechenden Abhängigkeiten in einen zusätzlichen Ordner zu packen.
Danke dafür!
Kann mir jemand zu Punkt 1 weiter helfen?


----------



## Kern (29. Okt 2014)

Habe es gelöst: 
Nachdem ich mir die Fehlermeldung nochmal genau angeschaut habe, habe ich einfach mal die Dll auf C:\Windows\System32\ herausgelöscht und die 64bit dll nochmal reinkopiert. War nur ein wenig verwirrend weil 64 bit JVM, 32 bit eclipse, 64 bit Bertriebssystem usw.
Jetzt klappt alles problemlos.
Danke an Kevin für den Tipp mit den anderen Exportmöglichkeiten


----------

