2016-03-30 8 views
2

Von Windows mit SQL Server Management Studio (SSMS), kann ich nur zu einem SQL Server auf einer anderen Domäne wie folgt an:Verbindung mit SQL Server auf einer anderen Domäne über JDBC

C:\> runas /netonly /user:differentDomainName\aUserName "C:\Program Files (x86 )\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe -S anIpAddress"

Wie kann Ich erreiche diese Verbindung über JDBC? Ich habe versucht, die folgende Verbindungszeichenfolge mit Microsofts sqljdbc 4.2-Treiber verwenden:

jdbc:sqlserver://anIpAddress:1433;database=MAIN;user=differentDomainName\\aUserName;password=pass

Ich erhalte den folgenden Fehler:

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'differentDomainName\aUserName'

Dies ist der gleiche Fehler, die ich erhalte, wenn ich anfangen SSMS ohne runas und tipped differentDomainName \ aUserName für den Login-Namen im Dialogfeld "Connect to Server" von SSMS 2012.

Zusätzliche Informationen: The J Die DBC-Verbindung wird innerhalb einer Anwendung hergestellt, die unter Linux ausgeführt wird. Daher ist das Ausführen der Anwendung mit runas leider keine Option.

Ein anderen Versuch: Ich habe auch versucht jTDS 1.3.1 mit der folgenden Verbindungszeichenfolge zu verwenden:

jdbc:jtds:sqlserver://anIpAddress:1433;databaseName=MAIN;domain=differentDomainName;user=aUserName;password=pass

seit aUserName eingerichtet ist, nur für die Windows-Authentifizierung. Leider ergibt sich die folgende Ausnahme:

o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool. Gefolgt von java.sql.SQLException: I/O Error: DB server closed connection.

Permission Informationen: Ich bin nicht in der Lage, alles auf dem SQL Server-Computer zu ändern, einschließlich der Konfiguration innerhalb von SQL Server. Das Konto "aUserName" wird einem schreibgeschützten Windows Server-Benutzer mit SQL Server zugeordnet.

+0

Vor einiger Zeit habe ich etwas Ähnliches mit jTDS für [diese Antwort] (http://stackoverflow.com/a/26465897/2144390) getan. Vielleicht könnte es Ihnen einige Ideen für andere Dinge geben, die Sie ausprobieren können. –

+0

Danke. Ich kann nichts auf dem SQL Server-Computer ändern, einschließlich einer Konfiguration in SQL Server. Der Benutzer ist als schreibgeschützter Benutzer eingerichtet. Ich habe versucht, das Code-Snippet zu verwenden, das Sie zur Verfügung gestellt haben (durch IP-Adresse, Benutzernamen und Passwort für meine Umgebung zu ersetzen) und erhalte immer noch dieselbe SQL-Ausnahme, die im OP notiert ist. – James

+0

Bitte beachten Sie [SO Post] (http: // stackoverflow.com/questions/14945075/receiving-sqlexception-login-failed-für-user-connecting-to-sql-server-2008) beschreibt die Windows-Authentifizierung sowie erforderliche .jar/.dll-Dateien. Denken Sie auch daran, Benutzername und Passwort als Argumente (nicht in Verbindungszeichenfolge) zu übergeben: 'DriverManager.getConnection (connectionStr, user, password)'. – Parfait

Antwort

0

Wenn Sie eine Verbindung mit dem MS JDBC-Treiber herstellen, geben Sie das Kennwort für den Benutzer nicht an (zumindest nicht in der Verbindungszeichenfolge, die Sie angegeben haben). Wenn Ihre Absicht integrierte Sicherheit verwenden war, sollten Sie dies in der Verbindungszeichenfolge angeben, aber dann hat man verarbeiten authentifiziert werden bereits für differentDomainName \ aUserName

Integrierte Sicherheit & JDBC: https://msdn.microsoft.com/en-us/library/ms378428%28v=sql.110%29.aspx?f=255&MSPPError=-2147217396#Connectingintegrated

Da Ihr Plan ist, Um von Linux aus auf den SQL-Server zuzugreifen, bezweifle ich, dass Sie die integrierte Sicherheit für dieses Szenario verwenden können. Sie sollten daher das Kennwort in der Verbindungszeichenfolge angeben. Ich bin nicht sicher, ob Sie Benutzername/Passwort für einen Domänenbenutzer in der Verbindungszeichenfolge angeben können (ich denke, Sie können), aber wenn Sie zu einem Benutzer mit SQL Server-Authentifizierung wechseln, wird es sicherlich funktionieren. Dies sollte eine Fallback-Option sein, da SQL Server Auth weniger sicher ist.

+0

Sie haben Recht damit, dass ich versuche, mich von Linux zu authentifizieren. Daher möchte ich keine integrierte Sicherheit verwenden. Ich muss Ihnen ein Passwort geben, wie Sie es vorgeschlagen haben. Ich habe das mit jTDS und auch mit dem MS-Treiber gemacht, aber als param. Ich habe das OP aktualisiert, um das anzuzeigen. Ich weiß, dass SQL-Server-Authentifizierung funktionieren würde, aber ich habe diese Option nicht. – James

Verwandte Themen