Kenntnisstand

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 NameArt der gespeicherten DatenSQLite-Datenbank

ChatConversations 

ChatCtiServerDatabasechat.db
ChatEvents  ChatCtiServerDatabasechat.db

StringProperties

Allgemein

CtiServerDatabasechat.db 

ValuePropertiesAllgemeinCtiServerDatabasechat.db, CtiServerDatabasejournal.db,
CtiServerDatabaseoffline.db, CtiServerDatabasetracker.db, 
CtiServerDatabasetask.db, CtiServerDatabaseBinaryTransfer.db, CtiServerDatabaseClientPersistence.db
journalJournal/ChatCtiServerDatabasejournal.db
offlineJournalCtiServerDatabaseoffline.db
trackerJournalCtiServerDatabasetracker.db
taskGeplante AnrufeCtiServerDatabasetask.db

Ab ProCall 7 Enterprise gibt es noch weitere Tabellen:

Tabellen NameArt der gespeicherten DatenSQLite-Datenbank
BinaryTransferMetaDataChat (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.