Questions & Answers

ErnstLustig
I'm new here

MSSQL-Problem

Hallo,

auf einem lokalen Entwicklungssystem lรคuft eine MySQL-Datenbank. ich lege dort eine Datenbank und Tabellen an.

Danach gehe ich meine FS-Servereinstellungen und fรผge die Verbindung zu meiner lokalen Datenbank hinzu.

# localhost

jdbc.DRIVER=com.mysql.jdbc.Driver

jdbc.PASSWORD=fs4@localhost

jdbc.URL=jdbc:mysql://localhost:3306/testdb

jdbc.USER=fs4

jdbc.layerclass=de.espirit.or.impl.mysql.MySQLLayer

Verbindung testen ist erfolgreich. Dann gehe ich ein Projekt und aktiviere die Verbindung und aktiviere auch "Schreibgeschรผtzt" und "Kein Scheme-Sync", da ich nur lesend zugreifen mรถchte. ร–ffne ich nun das Projekt und wรคhle "Schema aus Datenbank erzeugen" aus, werden mir alle Tabellen im Schema schon angezeigt und kann somit lesend darauf zugreifen.

Selbe Vorgehensweise nun auf einem Produktions-Server. Unterschied ist, dass dort MSSQL verwendet wird.

jdbc.DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc.PASSWORD=XXXXXX

jdbc.URL=jdbc:sqlserver://localhost:1433;databasename=XXXXX;selectMethod=cursor

jdbc.USER=XXXXX

jdbc.layerclass=de.espirit.or.impl.mssql.MSSQL2005Layer

Jedoch wird beim Anlegen des Schemas nichts angezeigt, scheinbar sind keine Tabellen auffindbar.

Erst dachte ich an ein Rechte-Problem. Aber ich habe hier eine php-Absatzvorlage erstellt, woch รผber php-Funktionen mit demselben User auf localhost zugreife und dort kann ich auf alles zugreifen.

Woran kรถnnte das liegen? Gibt es Einschrรคnkungen bei MSSQL? Liegt das an dem Treiber?

Ach ja, lokales Testsystem ist FS 4.2.468 und Produktivsystem ist FS 4.2.219

Kรถnnte es an der Version liegen?

GruรŸ

0 Kudos
9 Replies
feddersen
Community Manager

Wie erzeugen Sie denn die Tabellen in der Datenbank? Wahrscheinlich nicht mit FirstSpirit?

Sind in der MSSQL Primary- und Foreign-Keys definiert?

0 Kudos

Nein, nicht mit FirstSpirit, denn FS soll nur lesend darauf zugreifen, was mit MySQL auch sehr gut funktioniert. Foreign Keys gibt es hier nicht explizit und ich habe auch noch keine Primary Keys definiert, da ich erst die grundlegende Funktionalitรคt testen wollte. Sind diese Pflicht?

0 Kudos

Ja, Primary-Keys mรผssen meines Wissens vorhanden sein, damit der Import und Zugriff klappt.

0 Kudos

Hm, kann das nach Tests nicht bestรคtigen. Wir haben einen lokalen MSSQL-Server aufgesetzt und dort nun Tests durchgefรผhrt. Nach einigen erfolglosen Versuchen haben wir festgestellt, dass FirstSpirit bei MSSQL nicht den Datenbank-Namen erwartet, sondern den Schema-Namen. Und das funktioniert auch ohne Primary Keys. Doch auch das funktioniert nicht im Produktivsystem.

Wir kommen nun nicht mehr weiter. Wir haben lokal etwas mit den Rechten rumgespielt und besondere Rechte scheinen auch nicht benรถtigt zu werden. Kรถnnte es an der etwas รคlteren FS-Version liegen? Wir finden auch keine Logs bzgl. Datenbank-Abfragen auf FirstSpirit-Seite. Gibt es eine Mรถglichkeit, da an Logs heranzukommen? Sonst noch Ideen?

0 Kudos

Also es funktioniert im Test mit 4.2.468 und beim Kunden mit 4.2.219 nicht?

Peter
0 Kudos

Ja, ich weiรŸ allerdings nicht ob es an der FirstSpirit-Version liegt.

Vielleicht auch an irgendwelchen Datenbank-Einstellungen. Daher die Frage, wie die Datenbank bei MSSQL konfiguriert sein muss, sodass das funktioniert, bzw. ob es eine Mรถglichkeit das irgendwie zu debuggen.

0 Kudos

Ok, Produktivserver ist nun upgedatet auf diesselbe Version und es geht immer noch nicht.

Fรผr mich klingt es immer mehr nach einem Bug und ich werde das mal an den Helpdesk weiterleiten.

Oder hat noch jemand eine Idee?

0 Kudos

Hallo,

beim Helpdesk kam noch kein Ticket an - haben Sie das Problem inzwischen gelรถst?

Wenn nicht, dann kรถnnte ich bei der Lรถsungssuche evtl. helfen.

Bei der MSSQL muss man den Parameter jdbc.SCHEMA mitangeben, ansonsten kann FS nicht wissen, welche Tabellen (aus welchem Schema) ausgegeben werden sollen. Abhรคngig von der Konfiguration der Datenbank (und des Users, der auf die DB zugreift) lautet der jdbc.SCHEMA Parameter gleich dem Usernamen oder aber "dbo".

Legen Sie einfach einen neuen Layer mit

-----------------------

dbc.DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc.PASSWORD=XXXXXX

jdbc.URL=jdbc:sqlserver://localhost:1433;databasename=XXXXX;selectMethod=cursor

jdbc.USER=XXXXX

jdbc.layerclass=de.espirit.or.impl.mssql.MSSQL2005Layer

jdbc.SCHEMA=dbo

oder

dbc.DRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver

jdbc.PASSWORD=XXXXXX

jdbc.URL=jdbc:sqlserver://localhost:1433;databasename=XXXXX;selectMethod=cursor

jdbc.USER=XXXXX

jdbc.layerclass=de.espirit.or.impl.mssql.MSSQL2005Layer

jdbc.SCHEMA={username}

-----------------------

und testen Sie, ob die Verbindung zur DB erfolgreich ist (prรผfen Sie ggf. den Schemanamen direkt in der DB!).

Wenn Sie dann baiserend auf diesem neuen Layer das Menรผ "Schema aus Datenbank erzeugen" aufrufen sollte das Problem nicht mehr auftauchen.

0 Kudos

Es kam kein Ticket, da ich das Problem umgehen konnte, auch wenn ich es nicht lรถsen konnte.

Auf demselben DBMS war bereits eine DB fรผr FS eingerichtet, ich habe zu dieser konnektiert und dort hat es funktioniert, auch wenn ich keinen offensichtlichen Unterschied in der Konfiguration feststellen kann (auรŸer der Kollation, aber kann es wirklich daran liegen?).

Kurze Frage zu ihrem Hinweis: Warum muss ich in der Konfiguration bereits ein Schema angeben? Wenn ich in FirstSpirit ein DB-Schema anlege, dann soll dieser doch das entsprechende Schema in der DB matchen oder nicht?? Also sprich: Ich lege eine DB and und lege Tabellen unter Schema xyz an. Im FirstSpirit lege ich die DB-Verbindung an und verbinde auf diese DB. Ich verbinde das Projekt mit der DB und schalte auf "Schreibgeschรผtzt" und "Kein-Schema-Sync". Ich lege im Projekt ein DB-Schema namens xyz an. Nun sollte er doch die Tabellen laden, die diesem Schema xyz zugeordnet sind oder ist das nicht das normale Verhalten? Warum sollte ich also schon das Schema mit angeben? Ich habe es auch so hinbekommen, aber eben nur in der schon bestehenden DB, warum auch immer...

0 Kudos

Type a product name