Contents
はじめに
本ガイドでは、DentalDB のデータを SQLite データベースから MySQL/MariaDB または SQL Server(MS SQL とも呼ばれます)へ移行する手順について説明します。
SQLite から MySQL/MariaDB やその他のデータベースエンジンへのデータ移行をサポートするフリーソフトや商用ツールは多く存在します。
私たちが短期間試した結果では、商用ツールの ESF Database Migration Toolkit の方が SQLite Migration And Sync よりもこの点において優れたパフォーマンスを示しました。
前提条件
XML ファイルの編集に関する基本的な知識
データベース管理に関する知識
SQL Server を使用する場合、DentalDB 2.4 Plovdiv 以降が必要です。あるいは 2.3 Matera DentalDB hotfix (Matera2.3 2019-10-02) でも対応可能です。
3.2 Elefsina より前のバージョンの DentalDB では、MariaDB のバージョン 10.6.x までしかサポートしていません(それ以降の MariaDB バージョンでは互換性がない場合があります)。
手順
- データ損失を防ぐため、SQLite データベース DentalDB_V3.sqlite のバックアップを作成します(デフォルトでは c:\CAD-Data に配置されていますが、販売代理店の設定によって場所が異なる場合があります)。
- 移行先となるデータベースでスキーマを作成します:
- スキーマ名、ユーザー名、パスワードをメモしておきます。以下の例では、スキーマ名を dentaldb、ユーザーを test、パスワードを somepass とします。
- データベースユーザーに正しい権限を付与してください。詳細はデータベースのドキュメントをご参照ください。
- settings-db.xml ファイルが DentalDB\config フォルダ内に存在しない場合は作成します。
- settings-db.xml を以下のように編集します:
- 既に SQLSettings タグが存在する場合は、以下の内容に置き換えます。
- SQLSettings タグが存在しない場合は、以下の例を参考に追加します。
- コマンドプロンプトを開き、引数 /CreateDatabase を付けて DentalDB を実行します。
- Note: DentalDB のウィンドウは表示されず、必要なテーブルが作成されるとアプリケーションは終了します。
- 必要に応じて、 こちら に記載の手順に従い、データベースのエンコーディングを調整します。
- 好みの移行ツールを使用し、ソースに SQLite ファイルを、ターゲットとして上記で設定したデータベースを指定してデータを移行します。
MySQL/MariaDB の設定例
- <SQLSettings>
- <ConnectionString>Server=localhost;Database=dentaldb;User ID=test;Password=somepass</ConnectionString>
- <SQLDialect>NHibernate.Dialect.MySQLDialect</SQLDialect>
- <DriverClass>NHibernate.Driver.MySqlDataDriver</DriverClass>
- </SQLSettings>
SQL Server の設定例
SQL Server 認証での接続
- <SQLSettings>
- <ConnectionString>server=MY_DENTAL_SERVER_PC_NAME\SQLEXPRESS01; database=dentaldb;user=test;pwd=somepass</ConnectionString>
- <SQLDialect>NHibernate.Dialect.MsSql2008Dialect</SQLDialect>
- <DriverClass>NHibernate.Driver.SqlClientDriver</DriverClass>
- </SQLSettings>
Windows 認証での接続
- <SQLSettings>
- <ConnectionString>server=MY_DENTAL_SERVER_PC_NAME\SQLEXPRESS01; database=dentaldb;Integrated Security=SSPI;</ConnectionString>
- <SQLDialect>NHibernate.Dialect.MsSql2008Dialect</SQLDialect>
- <DriverClass>NHibernate.Driver.SqlClientDriver</DriverClass>
- </SQLSettings>
Chosing right character encoding for MariaDB/MySQL
対応するデータベースの文字セットは utf8mb4 を使用してください。そうしないと、(メモ欄など)特定の特殊文字を含むケースが保存に失敗する可能性があります。デフォルトの照合順序 (collation) が既に設定済みでない場合、以下の SQL コマンドを実行して対応する文字セットを設定してください:
- ALTER DATABASE dentaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ここで、dentaldb は DentalDB ソフトウェアで使用しているデータベース名です。
トラブルシューティング: 初期設定で誤った文字セットを使用していた場合、既存のテーブルを後から utf8mb4 に変換できます:
- ALTER TABLE dentaldb.CustomWorkDefinition CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.DependentOnNumericToothWorkParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.DependentToothWorkParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.NumericToothWorkParameter CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.TextualToothWorkParameter CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.ToothWork CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.ToothWorkParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.Treatment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.TreatmentValuedCustomInfo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.TreatmentValuedParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.ValuedMaterialParameters CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.WorkParamsInfoDentalShare CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.WorkParamsInfoLocal CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.WorkParamsInfoLocalImport CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.client_allowedImportedIds CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.clients CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.databaseInformation CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.laboratories CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.patients CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- ALTER TABLE dentaldb.technicians CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ここで、dentaldb は DentalDB ソフトウェアで使用しているデータベース名です。これは、正しい文字セットを設定せずにデータベースを運用していた場合にのみ必要となり、後からデータベースを復旧するための手順です。
免責事項
上記の移行手順は、データ損失やデータの正当性に関していかなる保証も行うものではありません。 これらのステップを実行する場合は、自己責任で行ってください。






