Database migration from Microsoft Access to SQLite
March 2025
Product relevance: ProCall 8 Enterprise from 8.0
Databases
Since ProCall Enterprise 8.0, Microsoft Access is no longer supported as a journal database. In ProCall 8 Enterprise required database updates are only for SQL-based databases performed.
It is essential to convert the UCServer to use a SQL-based database.
This article describes how to convert to "SQLite" as database.
If you plan to switch to Microsoft SQL Server, please follow the instructions at Best practice: Conversion of the UCServer database to Microsoft SQL server.
Please also refer to Limitations when using Microsoft SQL Server Express
The content of the Microsoft Access database can be transferred with the tool "ConvertUCServerMDB2SQLite.exe".
The porting of databases between two database systems is the responsibility of a database administrator.
The following instructions and the toolConvertUCServerMDB2SQLite.exe provided by estos are intended as non-binding assistance for the transfer of a database from Microsoft Access to SQLite and require specialist knowledge in the management of databases.
- Please understand that this tool ConvertUCServerMDB2SQLite.exe is generally excluded from estos support.
When does the database need to be converted?
The conversion must must be performed with version 8.3.5 as there are changes for writing in the database..
How can I check which database is in use?
You can see which database is used in the UCServer administration under General - Database.
If "Access & SQLite" is still set here, the data must be transferred and the database converted .
Data transfer from Microsoft Access
To transfer the data, carry out the following steps:
Stop the UCServer service.
Save the directory "....\UCServer\database".
Copy the "ConvertUCServerMDB2SQLite.exe" from the directory "...\UCServer\Supportfiles" into the directory "....\UCServer\database".
Execute the "ConvertUCServerMDB2SQLite.exe" .
You have the following options here:
- via double-click
You will not receive any information about errors. - in an administrative CMD
Messages about the process and errors are displayed.
With successful data transfer, two new files are created:
- CtiServerDatabasejournal.db
- CtiServerDatabasetask.db
Start the UCServer service.
Log in to the UCServer Administration and set the database to "SQLite" under General - Database .
Restart the UCServer service.
The data transfer and conversion to SQLite is now complete.
Further parameters and logging
ConvertUCServerMDB2SQLite.exe [-h] [-i INPUTFILE] [-o OUTPUTFILE] [--verbose] [--version]
optional arguments:
-h, --help show this help message and exit
-i INPUTFILE, --inputfile INPUTFILE
MS Access database filename
-o OUTPUTFILE, --outputfile OUTPUTFILE
SQLite database filename
--verbose Print some more info while processing
--version show program's version number and exit
To activate extended logging, use the parameter --verbose.
Known problems and restrictions
Error message ODBC Exception - Cannot open database '(unknown)'
If the conversion of data bases results in error codes like
Databaseconverter 20240205
Convert C:\Program Files (x86)\estos\UCServer\database\CtiServerDatabasejournal.mdb -> CtiServerDatabasejournal.db ...
Connect to MDB: Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\Program Files (x86)\estos\UCServer\database\CtiServerDatabasejournal.mdb;
Error openning MDB: Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\Program Files (x86)\estos\UCServer\database\CtiServerDatabasejournal.mdb;
ODBC Exception:
('HY000', "[HY000] [Microsoft][ODBC Microsoft Access Driver] Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt. (-1028) (SQLDriverConnect); [HY000] [Microsoft][ODBC Microsoft Access Driver] Cannot open database '(unknown)'. It may not be a database that your application recognizes, or the file may be corrupt. (-1028)")
please try
- to open the database file CtiServerDatabasejournal.mdb with Microsoft Access,
to reorganize the database with help of the included database tool Compact and repair database and
- to save the edited database as an Access 2000 database (*.mdb)
The same process must be performed with the database file `CtiServerDatabasetask.mdb.
These database files edited in this way should then be successfully converted without any problems:
Databaseconverter 20240205
Convert C:\Program Files (x86)\estos\UCServer\database\CtiServerDatabasejournal.mdb -> CtiServerDatabasejournal.db ...
Connect to MDB: Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\Program Files (x86)\estos\UCServer\database\CtiServerDatabasejournal.mdb;
Source table found: journal
Source table found: ValueProperties
Transfer table to SQLite: journal
Create tables for journal ...
CREATE TABLE journal ("TabIndex" INTEGER PRIMARY KEY, "EntryID" TEXT(255), "ConnectionID" TEXT(255), "StartTime" DATETIME, "StopTime" DATETIME, "DurationTotal" INTEGER, "ConnectTime" DATETIME, "DisconnectTime" DATETIME, "DurationConnected" INTEGER, "Outbound" SMALLINT, "Internal" SMALLINT, "LineNumber" TEXT(255), "LineName" TEXT(100), "LineUserName" TEXT(100), "LineUserOffline" SMALLINT, "LocalNumber" TEXT, "PhoneNumber" TEXT, "RedirectingNumber" TEXT, "ContactName" TEXT(100), "ContactCompany" TEXT(100), "ContactEntryID" TEXT, "ContactEntryStoreID" TEXT, "ContactEntryDBID" TEXT(4), "CTIServerUserName" TEXT(255), "ProviderNumber" TEXT(42), "Charging" REAL, "SuccessState" SMALLINT, "Subject" TEXT(255), "Memo" TEXT, "ReadFlag" SMALLINT, "ProjectName" TEXT(255), "ProjectID" TEXT(255), "PrivateCall" SMALLINT, "TrackerID" TEXT(36), "AcceptorName" TEXT(100), "AcceptorCtiServerUserName" TEXT(255), "AcceptorConnectionID" TEXT(255), "ProjectLocationID" TEXT(255), "TrackerLastCall" SMALLINT, "NoStatistic" SMALLINT, "CallType" INTEGER, "Label" TEXT(255), "TrackerCallFlow" SMALLINT, "Deleted" BOOLEAN CHECK ("Deleted" IN (0, 1)), "TransactionID" INTEGER DEFAULT 1);
CREATE UNIQUE INDEX IX_journal_ConnectionID ON journal (ConnectionID)
CREATE INDEX IX_journal_StartTime ON journal (StartTime ASC)
CREATE INDEX IX_journal_TransactionID ON journal (TransactionID ASC)
CREATE TABLE [ValueProperties] ([Name] TEXT CONSTRAINT [PK_ValueProperties] PRIMARY KEY, [Value] INTEGER NULL)
task_version 4
Transferred 379128 rows in table journal
Transfer table to SQLite: ValueProperties
Name [VARCHAR(20)]
Value [INTEGER(10)]
Transferred 1 rows in table ValueProperties
Conversion of journal successful
Databaseconverter 20240205
Convert C:\Program Files (x86)\estos\UCServer\database\CtiServerDatabasetask.mdb -> CtiServerDatabasetask.db ...
Connect to MDB: Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\Program Files (x86)\estos\UCServer\database\CtiServerDatabasetask.mdb;
Source table found: task
Source table found: ValueProperties
Transfer table to SQLite: task
Create tables for journal ...
CREATE TABLE [ValueProperties] ( [Name] TEXT CONSTRAINT [PK_ValueProperties] PRIMARY KEY, [Value] INTEGER NULL )
CREATE TABLE task ("TabIndex" INTEGER PRIMARY KEY, "EntryID" TEXT, "Subject" TEXT, "DatabaseContact" TEXT, "CallPhoneNumber" TEXT, "ProjectName" TEXT, "ProjectPIN" TEXT, "StartDate" DATETIME, "DueDate" DATETIME, "State" SMALLINT, "Priority" SMALLINT, "DelegationState" SMALLINT, "ReminderActive" BOOLEAN, "ReminderTime" DATETIME, "ReminderFile" TEXT, "Owners" TEXT, "Creator" TEXT, "CreationTime" DATETIME, "Body" TEXT, "DateCompleted" DATETIME, "CompletedFrom" TEXT, "Privacy" SMALLINT, "ProjectLocationID" TEXT)
task_version 2
Transferred 32594 rows in table task
Transfer table to SQLite: ValueProperties
Name [VARCHAR(20)]
Value [INTEGER(10)]
Transferred 1 rows in table ValueProperties
Conversion of tasks successful
Further information
Migration of the internal UCServer database from Microsoft Access to SQL Server
ProCall 8.0 Enterprise Release Notes
Best practice: Conversion of the UCServer database to Microsoft SQL server