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