SQL Engine Reference (v11)

エンジン DSN 用の詳細な接続属性

エンジン DSN 用の詳細な接続属性には以下のものがあります。

DSN オープン モード

エンジン DSN 用の DSN オープン モード オプションを使用すると、指定した DSN を介してテーブルを開く際に適用する特性を指定できます。これらのオプションは互いに排他的で、1 つしか選択することはできません。

これらのオプションは Btrieve の 「Open (0)」オペレーションで使用できるオープン モードに直接対応しています。DSN のオープン モードを設定することにより、その DSN によって開かれるテーブル(Btrieve ファイルに対応)のデフォルトの動作を設定することになります。

表 107 DSN オープン モードおよび ODBC 接続オプション
オープン モード
生成される ODBC 接続文字列
SQLSetConnectOption 呼び出し
ノーマル
OPENMODE=0
SQLSetConnectOption(pSubDbc, SQL_ACCESS_MODE, SQL_MODE_READ_WRITE);
アクセラレイティド
OPENMODE=-1
SQLSetConnectOption は無視されます。
リードオンリー
OPENMODE=1
SQLSetConnectOption(pSubDbc, SQL_ACCESS_MODE, SQL_MODE_READ_WRITE);
エクスクルーシブ
OPENMODE=-4
SQLSetConnectOption は無視されます。

ノーマル

デフォルトはノーマル モードです。ノーマル モードでテーブルを開くと、データベースに定義されている権限に従って読み込み/書き込みアクセスが許可されます。

このモードが選択された場合、ODBC 接続文字列には OPENMODE=0 が含まれ、データベースに接続した際に次の ODBC 関数呼び出しが実行されます。

SQLSetConnectOption(pSubDbc, SQL_ACCESS_MODE, 
SQL_MODE_READ_WRITE); 

アクセラレイティド

アクセラレイティド モードでテーブルを開くと、データベース エンジンが現在のユーザーに対し関数のロギングを行えなくなり、追加/更新のパフォーマンスが向上します。アクセラレイティド モードのロギングを変更しても、同じテーブルにアクセスしている他のユーザーには影響がありません。


注意

データベース エンジンは、クライアントがアクセラレイティド モードを使用している間は、クライアントのトランザクション アトミシティ、トランザクション一貫性保守、およびアーカイブ ログの安全性を保証できません。この制約があるのは、ログからの復元が必要な場合に、完全な復元を行うために十分な情報がログに含まれていない可能性があるからです。なぜなら、ログは、1 つのデータ ファイル上で行った操作の部分的な記録でしかないからです。

たとえば、アクセラレイティド モードを使用して追加を実行中のクライアントと、ノーマル モードを使用して更新を実行中のクライアントが同じファイルへアクセス中にシステム障害が発生した場合、メモリ上のアクセラレイティドの追加操作はディスクに書き出されませんが、トランザクショナルな更新操作はトランザクション ログに書き込まれるため、データ ファイルにまだ存在していないレコードに対する更新がトランザクション ログに含まれる可能性があります。

この操作の組み合わせを含むアーカイブ ログをロール フォワードしようとすると、失敗します。


このモードが選択された場合、ODBC 接続文字列には OPENMODE=-1 が含まれ、ODBC ドライバーは SQLSetConnectOption 呼び出しを無視します。このモードを指定するのに SQLSetConnectOption は使用できません。

リードオンリー

リード オンリー モードでテーブルを開いた場合、データベース構造やデータベース内のデータを変更する操作は許可されません。

このモードが選択された場合、ODBC 接続文字列には OPENMODE=1 が含まれ、データベースに接続した際に次の ODBC 関数呼び出しが実行されます。

SQLSetConnectOption(pSubDbc, SQL_ACCESS_MODE, 
SQL_MODE_READ_WRITE); 

エクスクルーシブ

テーブルをエクスクルーシブ モードで開くと、そのテーブルに対するほかの接続は許可されません。そのテーブルに現在ほかのユーザーがアクセスしている場合、エクスクルーシブ モードで開くことはできません。後でもう一度試す必要があります。

このモードが選択された場合、ODBC 接続文字列には OPENMODE=-4 が含まれ、ODBC ドライバーは SQLSetConnectOption 呼び出しを無視します。このモードを指定するのに SQLSetConnectOption は使用できません。

エンコード変換

エンコード変換オプションは、Pervasive PSQL データベース エンジンと ODBC を使用する Pervasive PSQL クライアント アプリケーション間で文字データをどのように変換するかを指定します。エンコードは、データをエンジンとクライアントの両方が処理できる標準形式にします。

なし

この設定では、クライアントおよびサーバー間で文字データの変換は行われません(クライアントとサーバーが同じオペレーティング システムのエンコードを使用していることが前提です)。

Pervasive PSQL v10 SP1 より前のバージョンでは、"OEM/ANSI 変換" には 選択解除または選択の 2 つの状態からの単一の選択がありました。選択解除状態は、"なし" と名付けられ、後方互換性のためにデフォルトとなっています(以前のバージョンでは選択解除がデフォルトでした)。

OEM/ANSI 変換

この設定により、アプリケーションは Pervasive PSQL を使用してすべての OEM 文字セットの文字データを格納または取得することができ、ANSI Windows 文字セットを使用してデータを操作および表示することができます。

Pervasive ODBC ドライバー トランスレーター DLL が、2 つの文字セット間で必要な変換をすべて行います。この機能は、DSN ごとにオン/オフを切り替えることができます。データベースとやり取りする文字データは ODBC ドライバーによって、OEM 文字セットと ANSI 文字セット間で正しく変換されます。

Pervasive PSQL Control Center(PCC)では JDBC ドライバーを使用します。JDBC ドライバーでは OEM から ANSI への変換を認識しません。PCC で表示させたい OEM データがある場合、データベースのプロパティで文字エンコード IBM437 を使用するよう設定します。

アプリケーションで SQLDriverConnect を使用してデータ ソースに接続する場合は、接続文字列オプション TRANSLATIONDLL=path_and_DLL_name を使って、トランスレーター DLL を指定することもできます。Pervasive PSQL 用のトランスレーター DLL 名は W32BTXLT.DLL です。


メモ

OEM から ANSI への変換オプションは、クライアントまたはローカル エンジン DSN のみで使用できます。リモート エンジン DSN の設定時には使用できません。


自動

この設定は、エンジン マシン上のデータベースのエンコードがクライアント マシン上の OS エンコードと異なる場合に文字データ形式を自動的に変換するよう、Pervasive PSQL ODBC クライアントに指示します。

Pervasive PSQL ODBC クライアントは、クライアントとサーバーが同じエンコードを使用することを確実にします。文字データの変換は、要求に応じてクライアントで行われます。エンジン マシン上のデータベース エンコードがクライアント マシン上の OS エンコードと同じ場合は、文字データ変換は不要です。

"自動" を指定するには、クライアントとサーバーが バージョン 10.1 以上である必要があります。

このマニュアルのコード ページと、『Pervasive PSQL User's Guide』のエンコードの相互の影響も参照してください。

設定による相互の影響

次の表で、データベース コード ページと DSN エンコード間の相互の影響を説明します。コード ページの説明については、DSN セットアップを介したデータベースの作成を参照してください。

表 108 データベース コード ページと DSN のエンコード変換設定
データベースのコード ページ
DSN エンコード変換
Pervasive PSQL ODBC ドライバー
サーバーのデフォルト
なし
(Pervasive PSQL v10 SP1 より前のバージョンのデフォルトの動作と同じです。)
データやメタデータの変換は行われません。サーバー上の OS エンコードとクライアント上の OS エンコードが一致していることが前提です。
データ変換の互換性のためには、クライアント マシンで使用するエンコードが、データベースにおけるデータとメタデータのエンコードと一致する必要があります。
特定のコード ページ
なし
(Pervasive PSQL v10 SP1 より前のバージョンのデフォルトの動作と同じです。)
データやメタデータの変換は行われません。サーバー上の OS エンコードとクライアント上の OS エンコードが一致していることが前提です。
データ変換の互換性のためには、クライアント マシンで使用するエンコードが、データベースにおけるデータとメタデータのエンコードと一致する必要があります。
サーバーのデフォルト
または
特定のコード ページ
OEM/ANSI
データベース コード ページを無視し、データおよびメタデータを、データベースの OEM エンコードからクライアント アプリケーションの ANSI Windows エンコードに変換します。
サーバーのデフォルト
自動
データおよびメタデータを、サーバーのデフォルトの OS エンコードから、クライアントの OS エンコードに変換します。
特定のコード ページ
自動
データおよびメタデータを、データベース コード ページから、クライアントの OS エンコードに変換します。


Pervasive 32 ビット ODBC エンジン DSN セットアップ

DSN セットアップを介したデータベースの作成