Btrieve API Guide (v11)

Continuous Operation(42)

Continuous オペレーション(B_CONTINOUS)では、アクティブなトランザクショナル インターフェイス ファイルを閉じることなく、システム バックアップを実行できます。ファイルのバックアップ中に行った変更は、デルタ ファイルと呼ばれる一時ファイルに記憶されます。デルタ ファイルに書き込まれた変更を除き、Continuous オペレーション モードに置かれたすべてのファイルの内容がシステム バックアップの対象になります。バックアップされたファイルが Continuous オペレーション モードから抜けると、トランザクショナル インターフェイスにより、デルタ ファイルの変更がこれらのファイルに自動的にロール インされます。


メモ

このオペレーションは、ローカル エンジンで動作しているアプリケーションにのみ使用できます。クライアント アプリケーションはリモート マシンにあるファイルに対してこのオペレーションを使用することはできません。


このオペレーションを使うと、ファイルがアクティブな状態のまま、それを安全にコピーできます。クライアント/サーバー セットアップでは、あるファイルで Continuous オペレーションを開始するクライアントは、そのファイルで Continuous オペレーションを終了するクライアントでもなければなりません。

パラメーター

 
オペレーション コード
ポジション ブロック
データ バッファー
データ バッファー長
キー バッファー
キー番号
送り値

 

 

戻り値
 
 

 
 


メモ

キー番号パラメーターの値が 0(Continuous オペレーション モードを開始)または 2(Continuous オペレーション モードを終了)の場合にのみ、データ バッファー パラメーターおよびデータ バッファー長パラメーターの値が必要です。以下に、これらのキー番号の値について説明します。キー番号パラメーターが 1 の場合、データ バッファー長は 0 である必要があります。


手順

Continuous オペレーション モードを開始するには、以下の手順を実行してください。

  1. バックアップの対象となるファイルまたはファイルのセットを定義するか、目的のファイルを現在バックアップの対象として定義されているファイルのセットに追加します。
    1. オペレーション コードに 42 を設定します。
    2. Continuous オペレーション モードに置くファイルの名前をデータ バッファー パラメーターに入れます。サーバー名のみを除いたフル パス名を入れます。名前をカンマで区切り、名前のリストの最後にバイナリ 0 を付けます。
      次の例は、Windows サーバーの場合の例です。
      f:¥acct¥march.mkd,f:¥acct¥april.mkd 
      
    3. 名前の長さをデータ バッファー長パラメーターに入れます。この値は、データ バッファー自体に入っている、バイナリ 0 を含めた実際の名前の長さ以上の値にする必要があります。たとえば、例に挙げた名前の場合、データ バッファー長には 40 以上の値を入れることが必要です。
    4. キー番号パラメーターに 0 を設定します。
  2. バックアップを実行します。
  3. Continuous オペレーション モードを終了します。
    1. オペレーション コードに 42 を設定します。
    2. キー番号パラメーターに 1 を設定します。
      1 つまたは複数の特定のファイルで Continuous オペレーションを終了するには、キー番号パラメーターに 2 を設定し、手順 1b で説明したようにファイル名をデータ バッファー パラメーターに入れます。さらに、手順 1c で説明したように、名前の長さをデータ バッファー長パラメーターに入れます。

詳細

一連のファイルをバックアップするように定義する場合は、以下の点に留意してください。

Continuous オペレーションを呼び出すサーバー ベースのアプリケーションを作成する場合は、必ず BTRVID を呼び出し、有効なクライアント ID を使用することで、同一クライアントのもとで Continuous オペレーションの開始と終了を行えるようにします。

Btrieve API では、BTRVID 関数を使ってバックアップ セットごとに異なるクライアント ID を指定し、複数のバックアップ セットを定義できます。ただし、同じファイルを 2 つのセットに入れることはできません。

トランザクショナル インターフェイスによってデルタ ファイルからデータ ファイルに変更内容がロール インされているときでも、ユーザーは通常の場合と同じように、トランザクショナル インターフェイス ファイルの更新、挿入および読み取りを引き続き実行できます。トランザクショナル インターフェイスは挿入作業で必要となれば、変更内容のロール イン中でもデルタ ファイルに新しいページを追加します。このため、変更内容が失われることはありません。


メモ

デルタ ファイルは決して手動で削除しないでください。


アプリケーションで BTRV 関数を使用する場合は、ファイルが Continuous オペレーション モードに入っているときにそのアプリケーションをアンロードしないでください。アンロードすると、対象となるファイルを Continuous オペレーション モードから削除できなくなることがあります。これは、対象となるファイルのオーナーとしてトランザクショナル インターフェイスが当初割り当てたデフォルトのクライアント ID が、別のアプリケーションに再割り当てされてしまう可能性があるからです。トランザクショナル インターフェイスでは対象となるファイルの正しいオーナーがわからなくなるため、それらのファイルを Continuous オペレーション モードから削除できなくなってしまいます。

Continuous オペレーション モードに入るとき、またはトランザクショナル インターフェイスによってデルタ ファイルからデータ ファイルに変更内容がロール インされている最中にシステムがクラッシュした場合は、システムの再起動後初めてそのファイルを開くときに、トランザクショナル インターフェイスによってすべての変更内容がファイルにロール インされます。

結果

Continuous オペレーションが正常に終了した場合、トランザクショナル インターフェイスからステータス コード 0 が返されますが、データ バッファーおよびデータ バッファー長パラメーターには何の値も返されません。

このオペレーションが正常に実行されなかった場合、トランザクショナル インターフェイスから次のステータス コードのいずれかが返されます。

11
指定されたファイル名は不正です。
12
トランザクショナル インターフェイスは指定されたファイルを見つけられません。
41
実行しようとした操作はトランザクショナル インターフェイスでは許可されていません。
51
オーナー ネームが不正です。
88
アプリケーションでモードの不一致エラーが発生しました。
91
アプリケーションでサーバー エラーが発生しました。

上記のコードに加え、アプリケーションには、ステータス コード 18 のような標準の I/O エラーが返されることがあります。

トランザクショナル インターフェイスから 0 以外のステータス コードが返される場合、Continuous オペレーションは、エラーを発生させた入力文字列の一部をデータ バッファーに返します。入力文字列が使用されていない場合、データ バッファーにはエラーの原因となったファイル名が返されます。データ バッファー長には、データ バッファー内の出力文字列の長さが反映されます。この場合は、エラーの原因となったファイル名の長さが入ります。

ポジショニング

Continuous オペレーションを実行しても、ファイルにカレンシーは確立しません。


Close(1)

Create(14)