[Gelöst] Navision SQL Server Mandantenimport

15. April 2010 11:23

Hallo liebe Experten,

ich habe folgendes Problem, bei dem ihr mir vielleicht helfen könnt.

Folgende Konstellation:
NAV 5.0 SP 1 (Client Build: 24199)
MS SQL Server 2005

In eine bestehende Datenbank wurde ein neuer Mandant importiert (fbk Sicherung über Navision Client).
Der Client ist während des Imports dabei abgeschmiert.

Der Mandant ließ sich jedoch problemlos öffnen und es erschien die Meldung, dass Mandant erfolgreich initialisiert wurde.

Auf dem SQL Server stellt sich jedoch folgendes Phänomen dar:
Die eigentlich nur temporär gedachten Tabellen wurden jedoch nicht gelöscht.

Vielen Dank im Voraus!

Gruß
Bob

Die Tabellen auf dem SQL Server haben folgende Name
[Mandantennamen].dbo.[Tabellenname]+100000000x
Beispielsweise gibt es die Tabelle Payment Terms zweimal
Payment Terms
Payment Terms1000000003

Auch im Objekt Designer werden die doppelten Tabellen angezeigt; Die Tabellen sind somit auch in der Tabelle Object hinterlegt.

Das Problem, der neue Mandant wurde bereits bebucht.

Folgendes haben wir bereits versucht.

Wir haben für den Mandanten eine fbk Sicherung erstellt und in eine eigenständige Datenbank importiert. In dieser Datenbank sind auch die doppelten Objekte enthalten. Diese haben wir in der Management Console gelöscht:
Sowohl die Tabellen als auch die in der Tabelle Object betroffenden Objekte (Table Data und Table).

Aus dieser Datenbank soll letztendlich eine fbk Sicherung erstellt werden, die wir in die bestehende Datenbank importieren wollen.

In der bestehenden Datenbank haben wir den importierten Mandanten gelöscht.

Wenn man nun die Funktion Datensicherung importieren aufruft (aus der bestehenden Datenbank), erscheint die Meldung, dass der letzte Import nicht erfolgreich durchgeführt wurde.
Es erscheint die Frage, ob man den Datenimport fortführen möchte.

Klickt man auf ja, rödelt der Client ohne Ende ( es gibt in Summe 55 Mandanten in der Datenbank).
Auch nach 2,5 Tagen war der Prozess noch nicht abgeschlossen. Deswegen wurde der Prozess abgebrochen.

Im zweiten Versuch haben wir die Frage, ob die Datensicherung fortgesetzt werden soll, verneint. Es erscheint die Frage, ob man den Datenimport rückgängig machen möchte. Was wir mit Ja bestätigt haben. Daraufhin werden Datensätze in der Tabelle Object gelöscht. (Nach etwa 8 Stunden ist der Prozess abgeschlossen).

Im Ergebnis sind alle temporär gedachten Tabellen gelöscht.

Versucht man aber nun , über die fbk Sicherung den Mandanten einzuspielen, die aus der neu angelegten und per SQL Statement bereinigten Datenbank erstellt wurde, erscheint nach Stunden (gefühlten Tagen), die SQL Fehlermeldung, dass der SQL Server über keine Lockressourcen mehr verfügt.

Wir vermuten, dass es an der Hohen Anzahl von Mandanten liegt, die den SQL Server in die Knie zwingen.
Bei Einspielung eines neuen Mandanten werden alle Tabellen pro Mandant gespiegelt, so dass man die doppelte Anzahl von Tabellen hat.
(ca. 1240 Tabellen x 2 x 55 Mandanten).

Die Datenbank, auf der wir versuchen, den Fall zu lösen:

Windows Server 2008
MS SQL Server 2005
NAV Client 5.0 SP 1
RAM: 4 GB
Zuletzt geändert von Bob der Baumeister am 16. April 2010 20:05, insgesamt 1-mal geändert.

Re: Navision SQL Server Mandantenimport

15. April 2010 13:08

Der Mandant wurde nicht korrekt und vollständig importiert. Die Meldung über eine erfolgreiche Initialisierung ersetzt nicht die Meldung über einen erfolgreichen Import!

Re: Navision SQL Server Mandantenimport

15. April 2010 15:29

Bob der Baumeister hat geschrieben:Folgende Konstellation:
NAV 5.0 SP 1 (Client Build: 24199)
MS SQL Server 2005
...
Windows Server 2008
MS SQL Server 2005
NAV Client 5.0 SP 1
RAM: 4 GB


Oh je ... :-(

Erstmal die Basics: Mit Client Build 24199 habt ihr kein 5.0 SP1 - die fangen alle ab 26084 an - sondern 5.0 RTM. D.h. ihr habt eine der schlechtesten NAV Versionen überhaupt, sowohl der C/SIDE Client als auch die DB selbst haben derart erhebliche Fehler, dass man sich schon wundern muss, dass es bisher überhaupt lief ... einer der Fehler ist auch im Zusammenhang mit dem FBK Restore ... dass 5.0 auch SIFT benutzt verschlimmert das Ganze auch erheblich ...

Windows Server 2008 ist für NAV erst ab 5.0 SP1 Update 1 Build 27191 freigegeben.
SQL Server 2005 sollte mindestens SP2 Update 4 Build 3200 sein; besser SP3 Update 4+
Nur 4GB RAM (das sind bei einem 32bit System max. 1,6GB, mit /3GB 2,6GB netto) bei 55 Mandanten - ohne zu wissen wie viele User mit dem System arbeiten und wie groß die DB ist, möchte ich ganz dreist behaupten, dass sowas nicht funktionieren kann.

D.h. ihr habt ein grundsätzliches Problem mit der Plattform, dieses Restore Problem sollte m.E. nur die "Spitze des Eisberges" sein ... ein Client Update sollte hier schon einiges helfen (z.B. 5.0 SP1 U1+ oder U2).

Im Moment gibt es keine andere Lösung des "gecrashten FBK Restores": Entweder den Restore fortsetzen oder zurückrollen und nochmal von vorne. Das Speicherproblem bleibt. Man könnte vor dem Restore sämtliche Indexe und SIFT deaktivieren, dann quasi nur die Daten restoren, danach wieder die Indexe & SIFT aktivieren und somit erstellen ... sowas müsste dann aber ausführlicher dikutiert werden ...

Wie gesagt, mit aktuelleren NAV Versionen geht der FBK Restore fixer ...

Viel Erfolg,
Jörg

Re: Navision SQL Server Mandantenimport

16. April 2010 10:49

Hallo Jörg,

erstmal vielen Dank für deine Rückmeldung!

Es handelt sich um eine Testumgebung (MS Server 2008 / SQ Server 4 GB RAM)

Folgendes hat nun geklappt:
1.Wir haben den Mandanten, der zu dem Problem geführt hat, gelöscht. (Zuvor wurde eine vollständige fbk Sicherung von dem Mandanten gemacht => mit Applikationsobjekten und mandantenübergreifenden Daten).

2. Extras / Datensicherung importieren. => Hinweis, das vorherige Datensicherung nicht erfolgreich; Frage, ob Datensicherung fortgesetzt werden soll, mit Nein beantwortet; Frage, ob vorherige Datensicherung rückgängig gemacht werden soll, mit Ja. => Ergebnis: die "temporären" Tabellen für die übrigen Mandanten werden gelöscht; die Datenbank sieht sauber aus.

3. Neue Datenbank angelegt und den gesicherten Mandanten in diese Datenbank eingespielt. Da die Sicherung mit Objekten gemacht wurde, sind in dieser neuen Datenbank natürlich auch die "temporären" Tabellen wieder enthalten. In dieser Datenbank haben wir per SQL Statement (SQL Management Studio) die Tabellen als solche gelöscht (Drop Table). Und anschließend in der Tabelle Object alle Datensätze mit Typ 0 und 1, die in dem Bereich 100000000x lagen (ebenfalls per SQL Statement). => "Temporäre" Tabellen sind nun gelsöcht.

4. Aus der bereinigten Datenbank für den Mandanten eine fbk Sicherung erstellt (ohne Applikationsobjekte und ohne mandantenübergreifenden Daten). Die Datensicherung haben wir in die Ursprungsdatenbank eingespielt. => Dies hat jetzt geklappt, nachdem wir die Datenbank dahingehend geändert haben, dass wir ein zweiten Filenamen im Register Transaktionprotokolldateien angelegt haben (Über Navision Client /Automatische Vergrößerung ist nicht aktiv und lässt sich auch nicht ändern). => Mit der Lockressource ist wohl darauf zurückzuführen, dass das Transaktionsprotokoll an seine Grenzen gestoßen ist.

Die Daten des importierten Mandanten sehen sauber aus!

Folgende Frage hätte ich aber noch, die ihr mir vielleicht beantworten könnt:
Ist es unbedenklich, eine zweite Transktionsprotokolldatei anzulegen?
Wie verwaltet der SQL Server diese? Wenn eine Daeti voll ist, wechselt er dann zur nächsten?
Ist es nicht so, dass nach einem vollständigen Backup das TransactionLog gelsöcht wird?

Vielen Dank im Voraus!

Gruß

Bob

Re: Navision SQL Server Mandantenimport

16. April 2010 11:30

OK, gut das es dann doch noch geklappt hat!

Bob der Baumeister hat geschrieben:Folgende Frage hätte ich aber noch, die ihr mir vielleicht beantworten könnt:
Ist es unbedenklich, eine zweite Transktionsprotokolldatei anzulegen?
Wie verwaltet der SQL Server diese? Wenn eine Daeti voll ist, wechselt er dann zur nächsten?
Ist es nicht so, dass nach einem vollständigen Backup das TransactionLog gelsöcht wird?


Nun, eine zweite LogDatei sollte man nur im Notfall anlegen, wenn der Speicherplatz auf dem ursprünglichen Laufwerk nicht ausreicht und man das Log nicht komplett verschieben kann. Ein "Parallelbetrieb" von mehreren LogDateien findes faktisch eh nicht statt, da das TLog rein sequentiell beschrieben wird; d.h. also ist die eine Datei voll, dann geht's mit der nächsten weiter.

Ein Full Backup löscht das TLog nicht, dazu benötigt man ein "Transaction Log Backup" - damit werden alle abgeschlossenen Transaktionen gesichert und dann aus dem TLog gelöscht.
Für Testumgebungen sollte man ggf. das "Wiederherstellungsmodell" Einfach wählen, dann werden die Log Informationen unmittelbar bei jedem Commit gelöscht (und können somit nicht gesichert werden).

Re: [Gelöst] Navision SQL Server Mandantenimport

16. April 2010 20:06

Besten Dank!!!

Gruß

Bob