JDBC mit MS-SQL

Status
Nicht offen für weitere Antworten.

Zweistein

Mitglied
Wie stellt man eine JDBC-Verbindung mit der MS-SQL-SERVER-Datenbank her.
Ich verwende das Beispiel-Programm lt.: http://support.microsoft.com/default.aspx?scid=kb;en-us;313100
Mein Server ist: SERVER1\SQL_SERVER1
Ist das wirklich der einzutragende Servername (hostname)?
Ich erhalte dabei folgende Fehlermeldung:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
 

Bleiglanz

Gesperrter Benutzer
Error establishing socket

=> Netzwerkverbindung OK?

=> lauscht der Server auf dem Richtigen Port?

=> Benutzername & Kennwort OK?

SERVER1\SQL_SERVER1

versuchs erstmal mit der IP Adresse :)

welche URL nimmst du?
 

Zweistein

Mitglied
Netzwerk-Verbindung ist ok: ping auf Server1 (=192.1.1.254) funktioniert.
Der Port ist der Default-Port (1433) und wurde auch nicht verändert.
Benutzername und Kennwort (Passwort) sind auch Ok.
Ich habs versucht mit 192.1.1.254.
Ich habs versucht mit SERVER1.
Ich habs versucht mit SQL_SERVER1.
und natürlich auch mit SERVER1\\SQL_SERVER1 (=SERVER1\SQL_SERVER1).

Was bedeutet hostname?
a) Die IP-Adresse (oder Name) des PCs, aber welche Instanz des SQL-Servers nimmt er dann?
b) Die Instanz des SQL-Servers (SQL_SERVER1), aber wie findet er dann den Rechner dieser Instance?
c) Die Kombination beider Parameter (SERVER1\SQL_SERVER1)
d) oder irgend ein anderer Name der nicht zu finden ist.

Ich habe erfolgreiche JDBC-Verbindungen mit Sybase Anywhere, Oracle und SAP-Datenbanken hergestellt.
Aber mit Microsoft scheint es trotz richtiger Treiber (2 verschiedene probiert) nicht zu klappen.
 

Bleiglanz

Gesperrter Benutzer
egal welchen treiber du nimmst, als host nimmt man normalerweise

SERVER1 oder die IP

die Instanz (bei dir SQL_SERVER1) spielt dabei erst mal keine Rolle, die wird normalerweise in der URL angegeben

ist das die DefaultInstanz auf dem SERVER1? ist es die einzige Instanz auf dem SERVER1? dann kannst du sie weglassen, wenn nicht musst du in die Doku für deinen Treiber schauen, wie die URL genau aufgebaut werden muss!
 

Bleiglanz

Gesperrter Benutzer
>>Error establishing socket.

Frage: kannst du mit ACCESS auf dem Client auf die Datenbank zugreifen? Vielleicht sind die Netzwerkeinstellungen des SQL-Servers nicht richtig??
 
G

Guest

Gast
Ich kann mit c# auf die Datenbank (bzw. Parallel-Datenbank auf der gleichen Instance) zugreifen.
Mit dem Enterprise-Manager und Dataarchitekt (über ODBC) kann ich auf diese Datenbank zugreifen.
Ich hab nur eine Instance auf diesem Server.
URL=jdbc:microsoft:sqlserver://192.1.1.254:1433/AU
 

Bleiglanz

Gesperrter Benutzer
welchen treiber nimmst du eigentlich?

ich verwende jdts und es funktioniert genau so, mit folgender jar:

jtds-0.9-rc2.jar
 

Zweistein

Mitglied
Zuerst habe den Treiber net.avenir.jdbc3.Driver probiert.
Danach den von Microsoft: com.microsoft.jdbc.sqlserver.SQLServerDriver
und nun den in jtds-0.9-rc2.jar (net.sourceforge.jtds.jdbc.Driver, URL=jdbc:jtds:sqlserver://192.1.1.254:1433/AU).

Aber mit keinen dieser Treiber schaffe ich eine Verbindung zur MS-SQL-DB.
Ich verwende JDK 1.4.2_06, kann das damit zusammenhängen ?
 

Bleiglanz

Gesperrter Benutzer
Nein, würde mich wundern! Hast du immer noch

>>Error establishing socket

Wenn du mit dem Enterprise-Manager nach Datenbanken suchst, ist dann

SERVER1\\SQL_SERVER1

wirklich der einzige Eintrag für den SERVER1

Wie ist das Netzwerk für die DB konfiguriert (NamedPipes und TCP/IP usw???)

ansonsten keine Ahnung!
 

Zweistein

Mitglied
Es ist wirklich der einzige Eintrag (auch im gesamten internen Netzwerk).

Bei Clientkonfiguration ist folgendes Eingestellt:
TCP/IP
Serveralias: SERVER1\SQL_SERVER1
Servername: SERVER1\SQL_SERVER1
Anschluss dynamisch bestimmen ist angeklickt.

Selbst über ODBC schaffe ich keine Verbindung von Java zur MS-Datenbank.
Eine ODBC-Verbindung von Java zur Sybase-Datenbank funktioniert aber
und eine ODBC-Verbindung von DataArchitekt zur MS-Datenbank funktioniert ebenfalls.

Den Fehler "Error establishing socket" erhalte ich nur beim Beispielprogramm mit meinen Parametern.
 

Bleiglanz

Gesperrter Benutzer
neue Idee

ist die Authentifizierung nur über Windows möglich?

oder ist Windows + SQL-Server eingestellt (das muss sein, weil der JDBC-Treiber ja die Windows-Credentials nicht mitschicken kann)
 

Zweistein

Mitglied
Es ist "Mit SQL Server-Authentifizierung anhand des vom Benutzer eingegebenen Benutzernamens und Kennworts" eingestellt, weil sonst eine freie Name und Passwort-Wahl für die Datenbank nicht möglich ist.
Wo kann man einstellen, welche Authentifizierung für JDBC verwendet wird?

Einen 1. Teilerfolg kann ich verzeichnen:
Eine Verbindung über ODBC zur MS-Datenbank über Java ist nun möglich
durch die Angabe von Name und Passwort auch in Java, nicht nur im ODBC-Treiber.

Eine JDBC-Verbindung zu MS funktioniert aber nach wie vor nicht.
 
D

Dennis

Gast
Hallo Zweistein,

hast Du die Lösung für Dein Problem denn letztendlich gefunden? Würde mich nämlich auch sehr interessieren, da ich vor dem gleichen Problem stehe. :(

Viele Grüße
Dennis
 
D

Dennis

Gast
Ich verstehe den Aufruf leider nicht!?

Wenn ich folgenden Auruf mache:
jdbc:microsoft:sqlserver://127.0.0.1\192.168.88.21:1433;databaseName=Northwind
funktioniert es nicht. Aber wozu muss ich denn einmal localhost aufrufen (=127.0.0.1) und dann nochmal die IP des SQL Servers (=192.168.88.21)? Oder hab ich da jetzt was total mißverstanden?
 

Bleiglanz

Gesperrter Benutzer
dürfte falsch sein, der zweite teil ist der instanzname der datenbank

also etwa 127.0.0.1 für die Default Instanz

oder 127.0.0.1\MSDE wenn auf dem Rechner auch noch eine MSDE läuft usw. usw.
 

thE_29

Top Contributor
Du mußt die Adresse eingeben und net Localhost!

Das ist nur wenn der Server auch auf deinem PC läuft (bisi logisch denken ist schon schwer....).

Desweitern hat der SQL Server immer einen Namen, bsp von Bleiglanz wäre MSDE, dann würde es so aussehn

jdbc:microsoft:sqlserver://192.168.88.21\MSDE:1433;databaseName=Northwind
 

[RTB]H3r0

Mitglied
das ist doch unnötig....
Die Angabe des Instabzname ist optional.
hast du mehrere Instanzen des SQL-servers laufen??
ich denke nicht.
jdbc:microsoft:sqlserver://passus.dyndns.ws:1433;user=NAME;Password=PASSWORD;databasename=startCatalog

wäre eine gültige url.
getConnection ist überladen.
ich würde immer nur eine Parameter übergeben, nämlich diesen 'ConncetionString';
in der Hilfe stehen noch einige weitere Optionale Parameter für dieses Konstrukt.

gl.
 

thE_29

Top Contributor
Jo, ich habs immer mit usernamen und passwort extra gemacht, da bei mir der String in der registry steht und wenn da ein pw steht, kommt das net so gut ^^
 
D

Dennis

Gast
Sorry, ich krieg das nicht auf die Kette. Wenn ich ein Applet auf meinem PC laufen habe (mit JDK Installation) und ich möchte Daten in einen Stink normalen SQL Server schreiben lassen, dann mache ich doch nach Eurer Aussage folgenden Aufruf:

jdbc:microsoft:sqlserver://192.168.88.21\MEINMSSQLSERVERNAME:1433;databaseName=Northwind

Wenn ich das aber so eingebe, kommt eine Fehlermeldung beim komilieren:

"illegal escape character" beim backslash.
Echt sorry wenn ich das nicht so gepeilt kriege, aber ich verstehs nicht. bin noch java neuling, daher bitte um nachsicht.
 
D

Dennis

Gast
@[RTBH3r0:
Auch nach Aufruf
jdbc:microsoft:sqlserver://passus.dyndns.ws:1433;user=NAME;Password=PASSWORD;databasename=startCatalog

bleibt die Fehlermeldung bestehen. Leider...
 

thE_29

Top Contributor
jdbc:microsoft:sqlserver://192.168.88.21\MEINMSSQLSERVERNAME:1433;databaseName=Northwind

der Fehler ist dass, das du 2 \\ machen mußt, damit der Compiler dir das in 1 \ umwandlet, also so

jdbc:microsoft:sqlserver://192.168.88.21\\MEINMSSQLSERVERNAME:1433;databaseName=Northwind


Dachte das wäre jetzt schön langsam klar, da man immer 2 \ braucht um 1en \ darzustellen!
 
D

Dennis

Gast
Leider kannte ich das bisher nur von PHP aber noch nicht von Java. Aber Danke jetzt weiß ich es.

jdbc:microsoft:sqlserver://192.168.88.21\\MEINMSSQLSERVERNAME:1433;databaseName=Northwind

produziert leider die Fehlermeldung:

The requested instance is either invalid or not running.
 

Bleiglanz

Gesperrter Benutzer
läuft auf deinem rechner eine instanz mit namen

MEINSQLSERVERNAME

?

wenn du nur einen einzigen sqlserver laufen hast, dann ist die angabe des servernamens i.A. überflüssig

verwechsle nicht

"host" = IP-Adresse bzw. WINS name des Rechners

"instanz" = ein Prozess auf dem host, der die db darstellt
 

[RTB]H3r0

Mitglied
natürlich SOLLTE man nur eine Instanz angeben, wenn auch MEHERE laufen. ansonsten ist diese angabe unnötig.
Instanz ist NICHT DIE DATENBANK, die dann geöffnet widr.
diese wird eben mit dem Parameter databasename
übergeben.
nimm das:
Code:
url="jdbc:microsoft:sqlserver://192.168.88.21:1433;databaseName=Northwind"

wenn der server local bei dir ist, dann nimm auch lieber die Localhost-Ip 127.0.0.1

wenn jetzt die connection aufgebaut wird, dann mit
Code:
DriverManager.getConnection(url,"userName","password");

good luck.
 
D

Dennis

Gast
Also wir haben nur einen SQL Server laufen. Das Applet läuft momentan auf einem Client (Win XP) und der SQL Server auf einem Win2k Server.
Wenn ich das Beispiel von [RTB]H3r0 nehme, bringt er wieder den Fehler:

Error establishing socket.

Kann das eventuell mit irgendwelchen gesperrten Ports zusammenhängen? Also der SQL läuft definitv auf Port 1433. Irgendwas am Client noch einzustellen?
 

[RTB]H3r0

Mitglied
ahhh ha.
das heisst, das keine netzwerk verbindung besteht.

ich weiss auch nicth wie das explizit mit Applets funktioniert.
da muss mann glaube ich auch die java.security mitverwalten.

der client braucht ne physicalischje verbindung.
sollte der Server den zugriff blocken, dann gibts ne andere fehler meldung.
 
D

Dennis

Gast
Also ne Netzwerkverbindung besteht auch zu 100 %. Der SQL Server hängt an nem Switch und der Client auch! Ich kann ja auch mit anderen Programmen auf den SQL zugreifen. Oder wie meinst Du das mit physikalische Verbindung?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
D Asynchrone Aufrufe mit jdbc Datenbankprogrammierung 5
Edin JDBC Hilfe Datenbankprogrammierung 2
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
J JDBC anschaulich präsentieren Datenbankprogrammierung 2
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
ralfb1105 Oracle JDBC Debugging Datenbankprogrammierung 8
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
B MySQL JDBC Kommentarfilter Datenbankprogrammierung 4
Aruetiise MySQL Name JDBC Drive finden Datenbankprogrammierung 4
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
F MySQL JDBC Problem Datenbankprogrammierung 5
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
looparda SQLite Active JDBC Abstraktion Datenbankprogrammierung 2
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
S JDBC PreparedStatement durchiterieren Datenbankprogrammierung 6
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
KaffeeFan JDBC/ODBC-Bridge entfernt Datenbankprogrammierung 4
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
flenst111 SQL-Statement Wie konfiguriert man JDBC-Connect.richtig, damit es bei riesigen Tabs keinen Speicherüberlauf gibt? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
S JDBC mit Postgres DB connecten Datenbankprogrammierung 3
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
D JDBC - Verständnisfrage Datenbankprogrammierung 2
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
U JDBC prepaird Statements Datenbankprogrammierung 4
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
R Transaktionen von mehreren Anwendungen aus - JDBC Datenbankprogrammierung 3
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
C Dateipfad des jdbc Treibers Datenbankprogrammierung 2
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T JDBC Fehler Datenbankprogrammierung 2
J JDBC via Singleton Datenbankprogrammierung 12
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
K JDBC via Netzwerk Datenbankprogrammierung 4
B JDBC Connection Fehler Datenbankprogrammierung 8
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
D JDBC insert mit select abfrage Datenbankprogrammierung 5
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
B JDBC MySQL Statement Datenbankprogrammierung 3
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
V PostgreSQL JDBC Treiber fehlt Datenbankprogrammierung 6
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
C JDBC Datenbank funktioniert nicht Datenbankprogrammierung 7
C JDBC , JDO oder JPA Datenbankprogrammierung 17
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
K JDBC Buch kaufen? Datenbankprogrammierung 3
K Hibernate vs. JDBC Datenbankprogrammierung 4
K JDBC Driver not found Datenbankprogrammierung 10
GianaSisters Per JDBC auf Microsoft SQL 2005 Datenbankprogrammierung 24
S ich brauche tipps für JDBC Datenbankprogrammierung 4
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
J jdbc-dataSource in Klassen nutzen Datenbankprogrammierung 2
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
J MySQL Löschen von Rows mit JDBC Datenbankprogrammierung 9
G JDBC Exception Datenbankprogrammierung 3
Screen Ich suche eine SQLDatenbank ohne JDBC-Treiber Datenbankprogrammierung 12
F Fehlerhandling bei JDBC Datenbankprogrammierung 9
T JDBC und Arrays Datenbankprogrammierung 7
X Oracle JDBC und Joins? Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben