Questions & Answers

SOLVED
Prinzessin
I'm new here

Von CMS-Projekt in MSSQL-Datenbank schreiben

Jump to solution

Hallo, ich habe eine MSSQL 2008 Datenbank an das CMS angebunden. Bisher habe ich Datenbanken immer lesend angebunden.

Die erste soll nun durch das CMS befรผllt werden, d. h. sie ist mit Schreibrechten versehen.

Die Datenbank ist im CMS-Projekt nun so aufgenommen:

adminkonsole.jpg

Und in den Datenbank-Schemata so:

db_modell.jpg

Ich habe eine Tabellenvorlage "cms_blog.t_domain" erstellt mit diesen GUI-Elementen:

t_domain_form.png

und diesem Mapping:

t_domain_mapping.jpg

Diese Tabelle ist auch in den Datenquellen vorhanden und der Inhalt, den ich direkt in der Datenbank eingetragen habe, erscheint:

db_inhalt.jpg

Wenn ich einen bereits vorhandenen Eintrag bearbeite, funktioniert das ohne Probleme.

Sobald ich einen neuen Eintrag erstelle und speichere, erscheint diese Fehlermeldung:

(das Feld d_id ist Integer und autoincrement)

db_fehler.png

Client Version: 5.0.425.60000

Java Version: 1.6.0_20 Sun Microsystems Inc.

FSVersion=5.0.425.60000#3102;JDK=1.6.0_20 64bit Sun Microsystems Inc.;OS=Windows 7 6.1 amd64;Date=11.06.2014 18:43:28

de.espirit.or.ORException: value 'null' not valid for attribute 'DId'

    at de.espirit.or.impl.EntityImpl.setValue(EntityImpl.java:915)

    at de.espirit.or.impl.EntityImpl.setValue(EntityImpl.java:852)

    at de.espirit.or.impl.EntityImpl.setValue(EntityImpl.java:280)

    at de.espirit.firstspirit.store.access.contentstore.ContentUtil.setValue(ContentUtil.java:441)

    at de.espirit.firstspirit.store.access.contentstore.ContentUtil.storeDataValue(ContentUtil.java:320)

    at de.espirit.firstspirit.store.access.contentstore.ContentUtil.storeData(ContentUtil.java:265)

    at de.espirit.firstspirit.store.access.contentstore.ContentUtil.storeData(ContentUtil.java:257)

    at de.espirit.firstspirit.store.access.contentstore.ContentUtil.nStoreData(ContentUtil.java:243)

    at de.espirit.firstspirit.store.access.contentstore.DatasetImpl.setData(DatasetImpl.java:378)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.AbstractGuiXmlPanel.save(AbstractGuiXmlPanel.java:499)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.persist(ContentGuiXmlPanel.java:480)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.persist(ContentGuiXmlPanel.java:450)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.save(ContentGuiXmlPanel.java:445)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel$GuiXmlToolbar$2.actionPerformed(ContentGuiXmlPanel.java:658)

    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

    at de.espirit.firstspirit.common.gui.FsButton.fireActionPerformed(FsButton.java:86)

    at de.espirit.firstspirit.common.gui.StoreHoverButton.fireActionPerformed(StoreHoverButton.java:115)

    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)

    at java.awt.Component.processMouseEvent(Unknown Source)

    at javax.swing.JComponent.processMouseEvent(Unknown Source)

    at java.awt.Component.processEvent(Unknown Source)

    at java.awt.Container.processEvent(Unknown Source)

    at java.awt.Component.dispatchEventImpl(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Window.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.EventQueue.dispatchEvent(Unknown Source)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:133)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:117)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:110)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.run(Unknown Source)

Kann hier jemand helfen?

1 Solution

Accepted Solutions

In der Konfiguration einen Layer fรผr diese Datenbank anlegen und dem Projekt zuweisen. Dann im Projekt einen neuen Schema-Knoten [EDIT: in diesem Layer] anlegen. Ausfรผhrlicher steht das in der Dokumentation beschrieben. Sollte es da noch Rรผckfragen oder Unklahrheiten geben, einfach noch mal hier melden..

Peter

View solution in original post

0 Kudos
11 Replies
sehnert
I'm new here

Hallo Frau Neubauer,

ohne direkten Zugriff auf ihre Umgebung kann ich nur mutmaรŸen:

Die automatisch erzeugten IDs der einzelnen Datensรคtze (= AutoIncrement) werden von FirstSpirit selbst erzeugt und verwaltet (mit den versteckten Feldern "fs_id" und weiteren). Sie mรผssen also keine gesonderte ID fรผr einen Datensatz definieren.

Mit "DId" haben Sie ein weiteres AutoIncrement-Feld hinzugefรผgt, was auch als PrimaryKey gekennzeichnet ist und einen Datensatz eindeutig identifiziert. Daher ist das Feld in der Datenquellenรผbersicht enthalten, es wird direkt durchgereicht.

Um Transaktionskonflikte zu vermeiden und die Konsistenz der Daten sicherzustellen, sollte ein AutoIncrement vom Datenbank-Management-System (DBMS) geschrieben werden. Ein Redakteur kann leicht eine falsche Id vergeben oder unerlaubte Dupletten erzeugen.

Sie sollten das Feld "DId" bzw. "cs_id" aus ihrem Formular und dem Datenquellen-Schema entfernen, sodass nur noch der Name ("DName" bzw. "cs_name") verbleibt.

Ich hoffe ich konnte helfen. Fรผr Fragen stehe ich gern zur Verfรผgung.

Herzliche GrรผรŸe aus Freiburg

Sven Ehnert

re-lounge GmbH

Hallo Herr Ehnert,

die Tabelle t_domain besteht in der MSSQL-Datenbank aus zwei Feldern:

- d_id (int) Primary Key mit autoincrement

- d_name (nvarchar(255))

Ich dachte die fs_id wird nur bei Derby-Layern verwendet und nicht bei extern angebunden Datenbanken.
Komischerweise funktioniert ja bei mir das ร„ndern von bereits vorhandenen Datensรคtzen - nur nicht das neu Anlegen.

Das XML-Schema zur Tabelle t_domain sieht so aus:

<xs:complexType dbName="T_DOMAIN" name="TDomain" readonly="1">

    <xs:sequence>

        <xs:element dbName="D_ID" javaType="java.lang.Integer" length="10" name="DId" type="xs:integer"/>

        <xs:element dbName="D_NAME" javaType="java.lang.String" length="255" name="DName" nullable="1" type="xs:string"/>

    </xs:sequence>

</xs:complexType>

<xs:key autoIncrement="1" dbName="PK_T_DOMAIN" name="PK_t_domain">

    <xs:selector xpath="TDomain"/>

    <xs:attribute xpath="DId"/>

</xs:key>

<xs:keyref dbName="FK_T_POST_T_DOMAIN" field="tPostList" name="FK_t_post_t_domain" refer="TDomain" tfield="tDomain">

    <xs:selector xpath="TPost"/>

    <xs:attribute xpath="P_D_ID"/>

</xs:keyref>

Was genau sollte ich hier entfernen?

Im Formular fรผr die Tabelle habe ich das Feld DId bzw. cs_id entfernt und anschlieรŸend nochmal versucht Datensรคtze รผber das CMS zu speichern - hat leider nicht funktioniert.

0 Kudos
sehnert
I'm new here

Hallo Frau Neubauer,

in der Administrator-Dokumentation bin ich auf folgendes gestoรŸen:

Die Struktur und die Inhalte der externen Datenbank dรผrfen nicht verรคndert werden. Im Gegensatz zu internen Datenbanken ist fรผr externe Datenbanken nur ein lesender aber kein schreibender Zugriff mรถglich.

Es ist laut Doku zwingende Vorraussetzung, dass externe Datenbanken (="Kein Schema-Sync" aktiviert) nur lesend eingebunden sind. Sie mรผssten also zusรคtzlich noch die Option "Kein Schema-Sync" deaktivieren. Bitte unbedingt zuvor ein Backup anlegen!

Fรผr FirstSpirit wird im Allgemeinen das Feld fs_id zur eindeutigen Identifizierung eines Datenobjekts genutzt. Zusammen mit 3 weiteren Feldern werden die Freigaben und Versionen realisiert. Zusammen bilden die 4 properitรคren Felder den Primary Key.

Ich vermute, dass sie nach Aktivierung von Schema-Sync die Datenquellen-Vorlage danach neu anlegen mรผssen, damit FirstSpirit das Schema entsprechend anpasst.

Die Anpassung ihrer Eingabekomponenten zielte auf folgendes ab:

Ihr XML-Schema, dass d_id bzw. DId nicht leer sein darf (Attribut nullable nicht vorhanden). In Ihren Eingabekomponenten jedoch fehlt die Kennzeichnung als Pflichtparameter (allowEmpty="NO").

In das konkrete Feld sollte wie bereits erwรคhnt ein Benutzer ohnehin nichts schreiben dรผrfen.

Herzliche GrรผรŸe aus Freiburg

Sven Ehnert

re-lounge GmbH

0 Kudos

Sven hat vollkommen recht. Was auf jeden Fall nicht funktioniert ist, das Feld "d_id" als Eingabefeld in die Maske zu nehmen. Das muss aus dem Formular komplett entfernt werden. Ob es dann funktioniert ist aber noch nicht gesagt, weil fรผr externe Datenbanken nur lesender Zugriff unterstรผtzt wird. Wenn der schreibende Zugriff zufรคllig funktioniert, ist dies keien Produkteigenschaft, fรผr die wir Support liefern.

MfG, Peter

Peter
0 Kudos

Hallo Herr Ehnert,

ich habe nun in der Adminkonsole fรผr die externe Datenbank den Haken "Kein Schema-Sync" entfernt, das CMS-Projekt neu geladen und wollte soeben die Datenbank neu erzeugen. Das geht nicht, denn bei der Option "Schema aus Datenbank erzeugen" erscheint die externe Datenbank nicht mehr (was vorher mit gesetztem Haken der Fall war).

Ich hatte aber noch das vorherige Datenbankschemata der externen Datenquelle als Vorlage und habe dort eine neue Tabellenvorlage fรผr die Tabelle t_domain angelegt.

Hier habe ich trotzdem noch die Mรถglichkeit in den Bearbeitungsmodus in den Datenquelle zu wechseln. Aber beim Versuch der Neuanlage eines Eintrags erscheint diese Fehlermeldung:

Client Version: 5.0.425.60000

Java Version: 1.6.0_20 Sun Microsystems Inc.

FSVersion=5.0.425.60000#3102;JDK=1.6.0_20 64bit Sun Microsystems Inc.;OS=Windows 7 6.1 amd64;Date=16.06.2014 08:56:48

de.espirit.or.CounterException: Error code: 208, state: S0002

    at de.espirit.or.impl.generic.GenericCounterGenerator.getActualValue(GenericCounterGenerator.java:151)

    at de.espirit.or.impl.generic.GenericCounterGenerator.getNextBlockNumber(GenericCounterGenerator.java:124)

    at de.espirit.or.impl.generic.GenericCounterGenerator.getNextValue(GenericCounterGenerator.java:84)

    at de.espirit.or.impl.generic.GenericCounterGenerator.getNextValue(GenericCounterGenerator.java:19)

    at de.espirit.or.impl.PersistentContext.getNextValue(PersistentContext.java:192)

    at de.espirit.or.impl.PersistentContext.createIdentifier(PersistentContext.java:179)

    at de.espirit.or.impl.DBCommandHandler.handle(DBCommandHandler.java:47)

    at de.espirit.or.impl.CreateCommand.accept(CreateCommand.java:49)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:797)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:76)

    at de.espirit.firstspirit.content.ContentManagerImpl.commit(ContentManagerImpl.java:688)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:95)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.handle(ManagerCall.java:69)

    at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:578)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:545)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

    at java.lang.Thread.run(Thread.java:662)

    at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:37)

Caused by: java.sql.SQLException: Invalid object name 'dbo.TRANSACTION_COUNTER'.

    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)

    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)

    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)

    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)

    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)

    at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)

    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeQuery(SQLServerPreparedStatement.java:285)

    at de.espirit.or.impl.generic.GenericCounterGenerator.getActualValue(GenericCounterGenerator.java:141)

    at de.espirit.or.impl.generic.GenericCounterGenerator.getNextBlockNumber(GenericCounterGenerator.java:124)

    at de.espirit.or.impl.generic.GenericCounterGenerator.getNextValue(GenericCounterGenerator.java:84)

    at de.espirit.or.impl.generic.GenericCounterGenerator.getNextValue(GenericCounterGenerator.java:19)

    at de.espirit.or.impl.PersistentContext.getNextValue(PersistentContext.java:192)

    at de.espirit.or.impl.PersistentContext.createIdentifier(PersistentContext.java:179)

    at de.espirit.or.impl.DBCommandHandler.handle(DBCommandHandler.java:47)

    at de.espirit.or.impl.CreateCommand.accept(CreateCommand.java:49)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:797)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:76)

    at de.espirit.firstspirit.content.ContentManagerImpl.commit(ContentManagerImpl.java:688)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:95)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.handle(ManagerCall.java:69)

    at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:578)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:545)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at de.espirit.firstspirit.client.io.ServerCaller.callManager(ServerCaller.java:372)

    at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:55)

    at de.espirit.firstspirit.client.io.RemoteManagerCaller.invoke(RemoteManagerCaller.java:52)

    at de.espirit.firstspirit.server.$Proxy40.commit(Unknown Source)

    at de.espirit.firstspirit.store.access.templatestore.SessionHandlerImpl.commit(SessionHandlerImpl.java:129)

    at de.espirit.or.impl.SessionImpl.doCommit(SessionImpl.java:215)

    at de.espirit.or.impl.AbstractSession.commit(AbstractSession.java:589)

    at de.espirit.firstspirit.store.access.contentstore.DatasetImpl.save(DatasetImpl.java:1000)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.AbstractGuiXmlPanel.save(AbstractGuiXmlPanel.java:500)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.persist(ContentGuiXmlPanel.java:480)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.persist(ContentGuiXmlPanel.java:450)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.save(ContentGuiXmlPanel.java:445)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel$GuiXmlToolbar$2.actionPerformed(ContentGuiXmlPanel.java:658)

    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

    at de.espirit.firstspirit.common.gui.FsButton.fireActionPerformed(FsButton.java:86)

    at de.espirit.firstspirit.common.gui.StoreHoverButton.fireActionPerformed(StoreHoverButton.java:115)

    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)

    at java.awt.Component.processMouseEvent(Unknown Source)

    at javax.swing.JComponent.processMouseEvent(Unknown Source)

    at java.awt.Component.processEvent(Unknown Source)

    at java.awt.Container.processEvent(Unknown Source)

    at java.awt.Component.dispatchEventImpl(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Window.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.EventQueue.dispatchEvent(Unknown Source)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:133)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:117)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:110)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

0 Kudos

Hallo Peter,

wenn man externe Datenbanken nur lesend anbinden darf, wie ist es dann รผberhaupt mรถglich Inhalte vom CMS aus in eine Datenbank zu schreiben?

Fรผr die Derby-Layer gibt es laut Helpdesk eigentlich keinen "Support" und externe Datenquellen dรผrfen nur lesend angebunden werden  - wir brauchen aber nun die Mรถglichkeit Inhalte vom CMS in eine Datenbank zu schreiben. Diese Datenbank wird zukรผnfigt mehr als 20 Sprachen enthalten.

Ich weiรŸ auch von anderen Kunden, dass so etwas mรถglich ist und dass nahegelegt wird eine externe Datenbank aufzusetzen, diese an das CMS anzubinden und darรผber zu befรผllen.

Wenn nun externe Datenbanken nur lesend unterstรผtzt werden und es fรผr Derby-Datenbanken normalerweise keinen Support gibt, gibt es ja eigentlich gar keine wirkliche Lรถsung!?

Wenn doch, wรผrde ich Sie bitten hier Schritt fรผr Schritt aufzulisten was zu tun ist um unser Vorhaben umzusetzen.

Wir brauchen diese Datenbank sehr dringend.

0 Kudos

Das "extern" bezog ich auf den Aspekt "wer hat die Schema-Hoheit". Bei einer von FirstSpirit verwalteten Datenbank ist z.B die Schlรผsselverwaltung anders, als bei manuell angelegten Datenbanken. Daher sind diese Datenbanken dann nicht kompatibel zu anderen Anwendungen. รœber Views kรถnnen z.B aber andere Anwendungen lesend auf von FirstSpirit verwaltete Datenbankinhalte zugreifen.

Umgekehrt ist es bei Datenbank-Schematas, die nicht von FirstSpirit angelegt wurden. Diese kรถnnen in FirstSpirit nur lesend eingebunden werden.

Ich vermute, fรผr euren Anwendungsfall ist eine von FirstSpirit verwaltete Datenbank gewรผnscht. Diese muss nicht zwangslรคufig unter Derby laufen. Es werden auch Oracle, MySQL, PostgreSQL, MSSQL und DB2 als DBMS unterstรผtzt.

Peter

Genau dieser Fall trifft auf uns zu:

Umgekehrt ist es bei Datenbank-Schematas, die nicht von FirstSpirit angelegt wurden. Diese kรถnnen in FirstSpirit nur lesend eingebunden werden.

Ich vermute, fรผr euren Anwendungsfall ist eine von FirstSpirit verwaltete Datenbank gewรผnscht. Diese muss nicht zwangslรคufig unter Derby laufen. Es werden auch Oracle, MySQL, PostgreSQL, MSSQL und DB2 als DBMS unterstรผtzt.

Ich habe eine MSSQL Datenbank angelegt und mรถchte deren Inhalte รผber FirstSpirit verwalten.

Wie kann ich das tun?

0 Kudos

In der Konfiguration einen Layer fรผr diese Datenbank anlegen und dem Projekt zuweisen. Dann im Projekt einen neuen Schema-Knoten [EDIT: in diesem Layer] anlegen. Ausfรผhrlicher steht das in der Dokumentation beschrieben. Sollte es da noch Rรผckfragen oder Unklahrheiten geben, einfach noch mal hier melden..

Peter
0 Kudos

Type a product name