Best Practice: Datenmigration der UCServer Datenbank SQLite <-> Microsoft SQL Server
März 2023.
ProCall 7 Enterprise und ProCall 6 Enterprise (EOL)
Diese Best Practice Anleitung beschreibt am Beispiel ProCall 6 Enterprise (EOL) die Vorgehensweise für die Übernahme von Journal- und Chat-Daten (Chat V 2.0) bei einer Datenbank-Umstellung zum Beispiel bei Migration des UCServers auf ein anderes Server-Betriebssystem.
Hinweis zu ProCall Versionen
SQLite wird ab ProCall 6 Enterprise eingesetzt.
Für andere ProCall Versionen oder für Update-Verfahren von beispielsweise ProCall Version 5, bei der Microsoft Access für die Datenspeicherung eingesetzt wurde, ist diese Anleitung nicht vorgesehen.
Eine Datenbank-Umstellung und die Verwendung dieser Best Practice Anleitung setzt detaillierte Fachkenntnis und entsprechende Berechtigungen voraus!
Beachten Sie, dass Sie immer dafür sorgen sollten, Backups der verwendeten Komponenten anzulegen, damit Sie wieder zu einem funktionierenden Stand zurückkehren können.
Einleitung
Relevante Datenbank-Tabellen
An Datenbank-Tabellen für die Übernahme der ProCall 6 Enterprise Daten sind folgende Tabellen für die Verwaltung und das im nachfolgenden beschriebenen Migrationsschema relevant:
Tabellen Name | Art der gespeicherten Daten | SQLite-Datenbank |
---|---|---|
ChatConversations | Chat | CtiServerDatabasechat.db |
ChatEvents | Chat | CtiServerDatabasechat.db |
StringProperties | Allgemein | CtiServerDatabasechat.db |
ValueProperties | Allgemein | CtiServerDatabasechat.db, CtiServerDatabasejournal.db, CtiServerDatabaseoffline.db, CtiServerDatabasetracker.db, CtiServerDatabasetask.db, CtiServerDatabaseBinaryTransfer.db, CtiServerDatabaseClientPersistence.db |
journal | Journal/Chat | CtiServerDatabasejournal.db |
offline | Journal | CtiServerDatabaseoffline.db |
tracker | Journal | CtiServerDatabasetracker.db |
task | Geplante Anrufe | CtiServerDatabasetask.db |
Ab ProCall 7 Enterprise gibt es noch weitere Tabellen:
Tabellen Name | Art der gespeicherten Daten | SQLite-Datenbank |
---|---|---|
BinaryTransferMetaData | Chat (Filetransfer) | CtiServerDatabaseBinaryTransfer.db |
ClientPersistenceItemStore | Präsenzprofile, Rufumleitungsprofile, Daten für Live-Chat-Clients | CtiServerDatabaseClientPersistence.db |
SQLite
Je nach Ihrer Konfiguration sind diese an verschiedenen Orten zu finden. Haben Sie in der UCServer Verwaltung unter „Datenbank" die Option „SQLite" ausgewählt, so werden mehrere lokale SQLite-Datenbanken im Unterordner „Database" des UCServer Installationsverzeichnis angelegt. Die für die Migration benötigten Datenbanken bzw. Dateinamen sind aus den obigen Tabellen ersichtlich.
Microsoft SQL Server
Haben Sie dagegen einen Microsoft SQL Server (Express) im Einsatz und verwenden diesen bereits als primären Speicherort, werden die o.g. Tabellen dieser Datenbank hinzugefügt. Da Sie den Namen der Datenbank selbst festlegen können, müssen Sie diesen gegebenenfalls in der Verwaltung nachschlagen. Der Einfachheit halber wird in diesem Dokument vom Standard Datenbanknamen „CtiServerDatabase" ausgegangen.
Das Dokument beschreibt das Import-Verfahren über eine zusätzliche temporäre Hilfsdatenbank. Der Grund hierfür liegt in den unterschiedlichen Datentypen beider Datenbanksysteme. Grundsätzlich wäre auch ein direkter Import in die äquivalenten SQL-Tabellen möglich durch Schreiben einer benutzerdefinierten SELECT Anweisung mit expliziten CAST Operatoren. Aufgrund der vielen Spalten wird die Methode aber nur versierten SQL-Administratoren empfohlen.
Datenmigration
SQLite → Microsoft SQL Server
Für die nachfolgenden Schritte ist es in der Regel erforderlich, mit Administrator-Rechten auf dem jeweiligen Microsoft Windows Rechner angemeldet zu sein.
ODBC Verbindung zur aktuellen SQLite Datenbank
Für die Datenübernahme selbst ist eine ODBC-Verbindung zu Ihrer aktuellen SQLite Datenbank erforderlich.
Der Treiber von Christian Werner genügt hierfür vollkommen: http://www.ch-werner.de/sqliteodbc/ (released under a BSD-type license). Der Treiber wird als 32 Bit und 64 Bit Version angeboten. Downloaden und installieren Sie den Treiber auf dem System, auf welchem Sie später das SQL Server Management-Studio ausführen werden. Wichtig ist hierbei, dass der Treiber mit der Architektur des SQL Server Management-Studio übereinstimmt.
UCServer Dienst beenden
Beenden Sie den „estos UCServer" Dienst, damit keine Unterhaltungen während der Migration verloren gehen.
ODBC Verbindung zur SQLite Datenbank erstellen
Erstellen Sie auf dem System, auf welchem später das SQL Server Management Studio ausgeführt wird, eine ODBC-Verbindung zur SQLite Datenbank.
Öffnen Sie hierfür den „ODBC-Datenquellen-Administrator" von Microsoft Windows (odbcad32.exe).
- 64 Bit: Unterverzeichnis \System32
- 32 Bit: Unterverzeichnis \SysWOW64
Hinweis: Je nachdem, wo Sie „odbcad32.exe" starten, können Sie ggf. nur 32 Bit oder 64 Bit-Treiber damit konfigurieren. Ggf. auch dieses Programm mit Admin-Rechten starten.
Legen Sie eine systemweite Data Source Name (System-DSN) an.
Beispiel einer neuen ODBC-Verbindung - ODBC-Datenquellen Administrator (32-Bit) SQLite ODBC DSN Configuration
Wenn Sie das SQL Server Management Studio nicht auf dem Server, auf welchem der UCServer installiert ist, ausführen können oder wollen, ist es empfehlenswert, eine Dateifreigabe zu erstellen oder die Datei an einen Speicherort zu kopieren, von dem Sie von beiden Servern Zugriff haben.
UCServer Dienst starten/Verwaltung der Datenbank
Starten Sie den „estos UCServer"-Dienst wieder, dann öffnen Sie die UCServer Verwaltung und wählen aus der Navigation den Punkt „Allgemein / Datenbank".
Ändern Sie die Verwaltung auf „Microsoft SQL Server" und geben Sie Ihre firmenspezifischen Verbindungsparameter ein. Ihre SQL-Datenbank wird nun initialisiert und die Tabellen mit allen Schema-Informationen angelegt.
Übernehmen Sie die neuen Einstellungen mit der Schaltfläche „Übernehmen" in der Toolbar. Achten Sie bitte zusätzlich auf etwaige Fehlermeldungen.
SQL Server Management Studio
Wechseln Sie nun in die Anwendung „SQL Server Management Studio". Melden Sie sich mit denselben Anmeldedaten ein, die Sie zuvor verwendet haben.
Suchen Sie die neu erstellte Datenbank und rufen von dieser über rechte Maustaste die Tasks/Aufgaben, von wo Sie den Import-Assistenten starten.
Datenquelle angeben
Als Datenquelle geben Sie „.Net Framework Data Provider for Odbc" an und tragen bei „Dsn" Ihren zuvor vergebenen System Data Sources Namen ein.
Beispiel: SQL Server-Import/Export-Assistent: Datenquelle und Dsn
Temporäre Ziel-Datenbank auswählen
Als Ziel-Datenbank wählen Sie im nächsten Schritt eine neue (temporäre) Datenbank zum Zwischenimport aus. Klicken Sie hierfür zuerst auf „Neu…".
Beispiel: SQL Server-Import/Export-Assistent: Neu…
Daten kopieren
Anschließend wählen Sie die Option „Daten aus mindestens einer Tabelle oder Sicht kopieren".
Quell-Tabellen auswählen
Im nächsten Schritt können Sie die Quell-Tabellen auswählen. Markieren Sie alle Tabellen mit einem Häkchen, welche unter Einleitung Relevante Datenbank-Tabellen aufgeführt sind.
Bevor Sie mit dem Assistenten fortfahren, müssen Sie nun zwingend die Microsoft SQL spezifischen Ziel-Datentypen für eine korrekte automatische Konvertierung anpassen. Andernfalls wird der Import fehlschlagen! Suchen Sie alle nicht erkannten Datentypen in allen Tabellen und ersetzen Sie diese!
Vergleichen Sie hierzu die automatisch generierten originalen Tabellen in der „CtiServerDatabase" und verwenden Sie die gleichen Datentypen.
Die Ersetzungen sollten sich generell auf zwei Datentypen beschränken.
Quelldatentyp | Zieldatentyp |
---|---|
18 oder text (1) | nvarchar |
unbekannter Typ | datetime |
(1) Abhängig von der eingesetzten Microsoft SQL Version
Ein bisher angezeigter Typ „text" muss damit zwingend in den Typ „nvarchar" geändert werden!
Beispiel: Spaltenzuordnungen von 2 Spalten
Import starten
Folgen Sie dem Assistenten, bis Sie diesen durch Klick auf „Fertigstellen" beenden können. Alle Datensätze sollten ohne Probleme importiert werden können, was mehrere Stunden dauern kann! Ist dies der Fall, kann mit dem eigentlichen Import der Daten begonnen werden.
Temporäre SQL Datenbank
Rufen Sie den Import-Assistenten erneut auf. Diesmal ist die Quelldatenbank Ihre temporäre SQL-Datenbank selbst.
Bsp. SQL Server-Import/Export-Assistent: Temp. DB
Produktive Datenbank wählen
Nun wählen Sie als Ziel Ihre tatsächliche produktive Datenbank aus.
Bsp. SQL Server-Import/Export-Assistent: Prod. DB
Daten kopieren
Wählen Sie im nächsten Schritt des Assistenten wieder den Punkt „Daten aus mindestens einer Tabelle oder Sicht kopieren" aus.
Tabellen auswählen
Im nächsten Dialog wählen Sie alle Tabellen aus.
Wichtig in diesem Schritt ist, dass Sie die Option der beiden Tabellen „StringProperties" und „ValueProperties" modifizieren.
Bsp. Tabellen modifizieren: Spaltenzuordnungen - Zeilen in Zieltabelle löschen und ggf. IDENTITY_INSERT aktivieren
Falls der Wizard einen Fehler bezüglich Schreiben in TabIndex-Spalte liefert und der Task nicht abgeschlossen werden kann, sollten Sie ggf. IDENTITY_INSERT aktivieren.
Assistent beenden
Die restlichen Seiten des Import-Assistenten können übersprungen und die Standardeinstellungen beibehalten werden. Beenden Sie anschließend den Assistenten und alle Datensätze sollten korrekt importiert werden.
Der Import läuft bei diesem Schritt um ein Vielfaches schneller ab.
Temporäre Datenbank löschen
Löschen Sie die temporär angelegte Datenbank wieder und stellen Sie anschließend sicher, dass sich die Benutzer wieder anmelden können.
Microsoft SQL Server → SQLite
Die Datenmigration in diese Richtung gestaltet sich sehr einfach mit Hilfe eines kleinen Tools, welches unter Public Domain verfügbar ist.
https://www.codeproject.com/articles/26932/convert-sql-server-db-to-sqlite-db
Quell- und Zieldatenbank wählen
Wählen Sie Quelldatenbank und Zieldatenbank aus. Die Parameter der Quelldatenbank und der Pfad der Zieldatenbank könnten sich bei Ihnen geringfügig unterscheiden. Der SQLite-Datenbankname muss allerdings „CtiServerDatabasechat.db" lauten.
Bsp. SQL Server To SQLite DB Converter
Starten Sie anschließend den Konvertierungsprozess.
Konvertieren
Kann auf die Quell- und Zieldatenbank zugegriffen werden, erhalten Sie ein Fenster mit den zu konvertierenden Tabellen. Markieren Sie hier nur die Tabellen, welche unter Einleitung Relevante Datenbank-Tabellen aufgeführt sind!
Nachdem der Dialog bestätigt wurde, sollten die Daten ohne Fehler übernommen worden sein.
Die Quelldatenbank bleibt immer die gleiche (MS SQL Server), die Zieldatenbanken werden anhand der oben genannten Tabelle mit unterschiedlichen Inhalten erstellt.
Bsp. der zu erstellenden Datenbanken
Offlinejournal
Geplante Aufgaben
Journaldatenbank
Chatdatenbank
Nachverfolgung/Tracking
Inhalte Teilen
Konvertierung abschließen
Die erstellten Datenbanken müssen dann dem UCServer zur Verfügung gestellt werden.
Bevor Sie die Dateien in das folgende Verzeichnis einfügen, beenden Sie den UCServer Dienst.
Dann können Sie die .db Dateien im Verzeichnis: "C:\Program Files\estos\UCServer\database" zur Verfügung stellen.
Starten Sie dann den UCServer Dienst neu.
Wählen Sie im UCServer Admin unter Datenbank den Punkt "SQLite" aus und kontrollieren Sie, ob das angegebene Verzeichnis passt.