Hallo, ich habe hier mehrere Java-Programme (JProg_x), die alle nach dem gleichen Muster gestrickt sind und bisher auf einem Windows2000 Server-Betriebssystem mit der Datenbank MSSQL-Server 2000 problemlos laufen und jetzt auf ein Windows2008 Server Betriebssytem mit dem MSSQL Server 2008 portiert werden sollen. Die Java-Programme werden mit dem JSL (Java Server Launcher) als Dienste installiert und die Konfigurationsdaten für den Datenbankzugriff werden jeweils aus der Datei "config\configuration.xml" in dem programmspezifischen Verzeichnis gelesen. Dort ist der Datenbankzugriff so konfiguriert : <database> <driver>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver <url>jdbc:microsoft:sqlserver://192.168.24.4:1433;DatabaseName=db_xy;Sel ectMethod=Cursor;</url> <user>db_xyu</user> <password>xyz</password> </database> Der Datenbankzugriff mit dem Programm "JProg_1.jar" funktioniert damit offenbar (es kommen jedenfalls keine Exception-Meldungen o.ä. im Logfile, auch wenn ein näherer Test mangels aktueller Daten, auf die das Programm reagieren müsste, schlecht möglich ist). Die beiden praktisch identischen Programme "JProg_2.jar" und "JProg_3.jar" mit dem gleichen Datenbanktreiber bekommen jedoch keine Datenbankverbindung und bringen u.a. diese Fehlermeldung : ERROR 2012-07-10 01:20:01,081 [Timer-0] (?:?):Could not connect to Database (Driver: com.microsoft.jdbc.sqlserver.SQLServerDriver URL: jdbc:microsoft:sqlserver://192.168.24.10:1433;DatabaseName=db_xy;SelectM ethod=direct User: db_xyu Password: xyz)! Maybe in the next run! de.?????.????.common.exceptions.ConfigurationRwisException: Could not connect to Database (Driver: com.microsoft.jdbc.sqlserver.SQLServerDriver URL: jdbc:microsoft:sqlserver://192.168.24.10:1433;DatabaseName=swis_regio;Se lectMethod=directUser: db_xyu Password: xyz)! Kann es sein, dass mit dem oben angegebenen Treiber bei der Betriebsystem- / Datenbankkombination "W2008 Server / MSSQL2008" ev. nur ein Programm eine Datenbankverbindung aufbauen kann und zusätzliche Verbindungen von anderen Programmen aus nicht möglich sind ? Hat jemand Tipps für ev. besser geeignete Java-Datenbanktreiber für die Betriebsystem- / Datenbankkombination "W2008 Server / MSSQL2008", die man in dem Konfigurationsfile angeben könnte? Compiliert wird der Java-Code mit einem Ant- buildfile (build.xml) unter Eclipse, Java Version 1.6 Danke !
interrupt schrieb: > Kann es sein ... Testfall schreiben bringt Gewissheit. Exception und Konfiguration scheinen sich zu unterscheiden (cursor versus direkt). Eventuell musst du den Instanznamen noch angeben.
Läubi .. schrieb: > ... Testfall schreiben bringt Gewissheit. Exception und Konfiguration > scheinen sich zu unterscheiden (cursor versus direkt). Ich habe schon "cursor" und "direct" ausprobiert, hat in beiden Fällen nicht funktioniert.
Hast du die datenbank auch passend auf den Gemischten anmeldemodues eingestellt? Im Standard verwendet die Datenbank nur Windows-Anmeldungen da kommt man mit einem Passwort nicht rein.
Peter II schrieb: > Hast du die datenbank auch passend auf den Gemischten anmeldemodues > eingestellt? Im Standard verwendet die Datenbank nur Windows-Anmeldungen > da kommt man mit einem Passwort nicht rein. Ja, eingestellt ist SQL-Authentifizierung, und wie gesagt, mit einem Programm scheint der Zugriff ja zu funktionieren.
steht der anmeldeversuch im Log der Datenbank?
Peter II schrieb: > steht der anmeldeversuch im Log der Datenbank? Gute Frage, muss ich nachsehen. Unabhängig davon : Welche Datenbanktreiber verwendet ihr bei der Kombination "W2008 Server / MSSQL2008"
interrupt schrieb: > und wie gesagt, mit einem > Programm scheint der Zugriff ja zu funktionieren Dann scheint es ja auch kein Problem zu geben... Geh doch einfach mal systematisch auf Fehlersuche anstatt im Nebel zu stochern...
interrupt schrieb: > nur > ein Programm eine Datenbankverbindung aufbauen kann und zusätzliche > Verbindungen von anderen Programmen aus nicht möglich sind ? Ja da war was. Ich musste damals in die Login-Daten rein schreiben (mit dem String, mit dem ich mich verbinde), dass ich Multiple Verbindungen haben will
interrupt schrieb: > Unabhängig davon : Welche Datenbanktreiber verwendet ihr bei der > Kombination "W2008 Server / MSSQL2008" per ODBC verwenden wir einfach den Systemtreiber der geht mit der 2000 un dem 2008 Server. Auch unter linux mit FreeTDS musst ich keinen Treiber welchseln wo wir von 2000 auf 2008 umgellt haben. Ich glaube MS hat bei der anmeldung nichts geändert, und wenn eine anwendung geht wird as Problem wo anders sein. (Andere Port, falsche IP usw). > Could not connect to Database Kommt die meldung sofort, oder scheint es ein Timeout zu sein
Läubi .. schrieb: > Dann scheint es ja auch kein Problem zu geben... Geh doch einfach mal > systematisch auf Fehlersuche anstatt im Nebel zu stochern... Es gibt SICHER ein Problem, das zeigt ja das Logfile. Die Frage war ja auch, ob mit dem Treiber ev. nur EINE DB-Verbindung möglich ist, was das Verhalten ja erklären, aber auch einen anderen Treiber notwendig machen würde.
Troll schrieb: > Ja da war was. Ich musste damals in die Login-Daten rein schreiben (mit > dem String, mit dem ich mich verbinde), dass ich Multiple Verbindungen > haben will Hast Du dazu einen Beispielstring ?
interrupt schrieb: > Die Frage war ja auch, ob mit dem Treiber ev. nur EINE DB-Verbindung > möglich ist, was das Verhalten ja erklären, aber auch einen anderen > Treiber notwendig machen würde. Und was hält dich davon ab einfach ein Testprogramm zu schreiben welches deine Vermutung bestätigt? Und wie viele Alternative JDBC Treiber hast du den zur Verfügung/getestet?
Läubi .. schrieb: >> Die Frage war ja auch, ob mit dem Treiber ev. nur EINE DB-Verbindung >> möglich ist, was das Verhalten ja erklären, aber auch einen anderen >> Treiber notwendig machen würde. > > Und was hält dich davon ab einfach ein Testprogramm zu schreiben welches > deine Vermutung bestätigt? Und wie viele Alternative JDBC Treiber hast > du den zur Verfügung/getestet? Meine begrenzte Zeit. Und weil Diskussionsforen einem den Aufwand ersparen sollten, das Rad immer wieder neu zu erfinden. Alternative JDBC-Treiber habe ich noch keine getestet und zur Verfügung, aber es sollte wohl kein grosses Problem sein, welche herunterzuladen, wenn jemand einen funktionierenden kennt. Ausserdem könnte das Thema durchaus von breiterem Interesse sein.
Was hältst Du davon, eine System-DSN zu konfigurieren und Dein JDBC via ODBC darauf zugreifen zu lassen? Dann musst Du alle verbindungsspezifischen Dinge nur noch bei der System-DSN einstellen, und nicht für Deine Java-Programme. Obacht allerdings, den ODBC-Administrator gibt es unter x64 zweimal, in grenzdebiler Weise hat MS entschieden, daß System-DSNs getrennt für 32-Bit- und für 64-Bit-Prozesse eingerichtet werden müssen. Das dafür zuständige Programm odbcad32.exe liegt entweder unter %systemroot%\system32 (dann ist es logischerweise die x64-Variante) oder unter %systemroot%\syswow64 (dann ist es auch logischerweise die x86-Variante. Im Startmenü und über die Systemsteuerung ist nur die x64-Variante zu finden.
Rufus Τ. Firefly schrieb: > Was hältst Du davon, eine System-DSN zu konfigurieren und Dein JDBC via > ODBC darauf zugreifen zu lassen? Danke für den Hinweis, Rufus. Habe ich schon gemacht, es handelt sich um ein 64-Bit-System, für die 32-Bit-Programme habe ich aber auch eine System DSN ODBC-Verbindung eingerichtet und die funktioniert auch mit verschiedenen Programmen (mehrere CPP-Programme und auch ein Java-Programm, alles Windows-Dienste) Da aber der Zugriff mit weiteren praktisch identisch gestrickten Java-Programmen nicht funktioniert, hatte ich den Verdacht, dass der verwendete Java-Treiber nur eine Verbindung zur Datenbank gleichzeitig aufbauen kann. Bei den Java-Datenbank-Treibern gibt es ja auch vier verschiedene Typen, wovon nur ein Typ die ODBC-Schnittstelle nutzt. Von welchem Typ der momentan eingesetzte Treiber <url>jdbc:microsoft:sqlserver://192.168.24.10:1433;DatabaseName=db_xyz;S electMethod=Direct;</url> ist, konnte ich bisher noch nicht eindeutig herausfinden.
interrupt schrieb: > Von welchem Typ der momentan eingesetzte Treiber > > <url>jdbc:microsoft:sqlserver://192.168.24.10:1433;DatabaseName=db_xyz;S > electMethod=Direct;</url> > > ist, konnte ich bisher noch nicht eindeutig herausfinden. Na, das wird der native Treiber für MS SQL-Server sein, ODBC nutzt das Ding nicht. Würdest Du via ODBC auf eine eingerichtete System-DSN zugreifen, müsste Dein Verbindungsstring so aussehen: jdbc:odbc:myDSN (statt "myDSN" natürlich der Name Deiner System-DSN).
aber über ODBC von JAVA aus zugehen ist doch unsinn. Wenn schon MS eine java treiber liefert sollte man ihn nutzen. Vergiss das ODBC zeug an dieser stelle. Finde erstemal raus ob die verbindung überhaupt zu stande kommt. Zur not netzwerk mitlesen. Verwende ein andere Paswort - schau ob sie die meldung ändert. Ändere die IP - schau was passiert.
interrupt schrieb: > Meine begrenzte Zeit. Und weil Diskussionsforen einem den Aufwand > ersparen sollten, das Rad immer wieder neu zu erfinden. Es geht hier doch garnicht ums neuerfiden, sondern dass duversuchst hier hilfe für ein Problem zu finden was möglicherweise garnicht existiert! Bau doch die Verbindung einfach per Hand auf, und parrallel dazu eine zweite dann siehst du sofort was Sache ist. Das dauert keine 5 Minuten und anhand der pezifischen Fehlermeldung kann man dann gerne nach einer Lösung fragen... aber glauben und programmieren gehört einfach nicht zusammen. interrupt schrieb: > Alternative JDBC-Treiber habe ich noch keine getestet und zur Verfügung, > aber es sollte wohl kein grosses Problem sein, welche herunterzuladen, > wenn jemand einen funktionierenden kennt. sollte könnte hätte... interrupt schrieb: > Ausserdem könnte das Thema durchaus von breiterem Interesse sein ja könnte... dann wäre es dir aber sicher möglich auf andere Seiten zu verweisen welche ein Ähnliches Problem beschreiben...
Der Datenbankzugriff funktioniert jetzt, nachdem ich einen anderen Treiber verwende und den TCP/IP-Port 1433 für den SQL Server nochmal explizit freigegeben habe : 1.) Freier JTDS-Treiber von http://jtds.sourceforge.net <driver>net.sourceforge.jtds.jdbc.Driver</driver> <!-- für "jtds-1.2.5-dist.jar" --> <url>jdbc:jtds:sqlserver://localhost/db_xyz</url> <!-- für "jtds-1.2.5-dist.jar" url=jdbc:jtds:sqlserver://SERVER-NAME/DB-NAME --> 2.) Freigabe TPC/IP Port 1433 Start Alle Programme Microsoft SQL Server 2008 R2 / Configuration Tools SQL Server Configuration Manager SQL Server Network Configuration Protocols for SQL xyz TCP/IP / IP Adresses : Bei IP1 - IP5 und IPAll den Wert für "TCP Port" auf "1433" gesetzt getestet mit den Java-Version jdk1.6.0.7 und jdk1.6.0.20
interrupt schrieb: > Der Datenbankzugriff funktioniert jetzt, nachdem ich einen anderen > Treiber verwende und den TCP/IP-Port 1433 für den SQL Server nochmal > explizit freigegeben habe : dann wird es aber nicht im Treiber gelegen haben. War ja klar das es am ende etwas mit den etzwerk zu tun hat. Aus dem Grund hatte ich ja geschrieben du sollst mal das netzwerk mitlesen. Der MS Treiber soll etwas besser sein, der TDS Treiber hat(te) ein Probme mit Datumswerten (War zumindest vor 4Jahren so).
Peter II schrieb: > Der MS Treiber soll etwas besser sein, Von welchem MS-Treiber sprichst Du (mssqlserver.jar, sqljdbc.jar, sqljdbc4.jar, ...) ? Hast Du den selbst im Einsatz ? Bei den Treibern sqljdbc.jar UND sqljdbc4.jar kam bei mir diese Meldung : "java.lang.UnsupportedOperationException: Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), Version 1.6, wird von diesem Treiber nicht unterstützt. Verwenden Sie die Klassenbibliothek 'sqljdbc4.jar', die Unterstützung für JDBC 4.0 bietet."
interrupt schrieb: > Von welchem MS-Treiber sprichst Du (mssqlserver.jar, sqljdbc.jar, > sqljdbc4.jar, ...) ? > Hast Du den selbst im Einsatz ? ich denke es war dieser hier (bzw. sein vorgänger v3) http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774 > Hast Du den selbst im Einsatz ? nein, bin von java geheilt. Wir verwenden jetzt c#.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.