XLAレプリケーション関数リファレンス
この項では、レプリケーション・メカニズムとしてXLAのみを使用する関数について説明します。関数は、アルファベット順に示されています。
ttXlaApply
この関数はXLAレプリケーション機能の一部であり、一般的なXLAアプリケーションでの使用には適していません。
説明
トランザクション・ログ・ハンドルに関連付けられているデータベースに更新を適用します。戻り値は、更新が成功したかどうかを示します。また、更新によって永続的な問題が発生したかどうかも示します。(更新で一時的な問題(デッドロック、タイムアウトなど)が発生したかどうかを確認するには、ttXlaErrorをコールし、エラー・コードを確認する必要があります。)
ttXlaUpdateDesc_tレコードがトランザクション・コミットの場合、基盤となるデータベース・トランザクションがコミットされます。ttXlaApplyで他のトランザクション・コミットは実行されません。パラメータtest (下の構文を参照)がtrueの場合は、レコードの更新および削除のために、更新記述内の古い値がデータベースの現在の内容と比較されます。更新記述内の古い値がデータベースの対応する行と一致しない場合、この関数は更新を拒否して、sb_ErrXlaTupleMismatchエラーを返します。
「レプリケーション・メカニズムとしてのXLAの使用」を参照してください。
ノート:
表定義が最初にトランザクション・ログに書き込まれてから変更された場合、ttXlaApplyは使用できません。文のレベルではなく、行のレベルで一意キー制約および外部キー制約がチェックされます。
必要な権限
ADMIN
ttXlaApply処理の対象となるターゲット・データベースでは、他の権限が必要になる場合があります。たとえば、ターゲット・データベースにCREATETAB(表の作成)レコードを適用するには、必要に応じて、CREATE TABLEまたはCREATE ANY TABLE権限を持つ必要があります。
構文
SQLRETURN ttXlaApply(ttXlaHandle_h handle,
ttXlaUpdateDesc_t* record,
SQLINTEGER test)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
|
SQL文を生成するトランザクション |
|
|
|
古い値のテスト:
|
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
testが1で、ttXlaApplyで更新の競合が検出されると、sb_ErrXlaTupleMismatchエラーが返されます。
例
この例では、既存のレコードの以前の値をテストせずに、更新をデータベースに適用します。
ttXlaUpdateDesc_t record; rc = ttXlaApply(xlahandle, &record, 0);
ノート
ttXlaApplyをコールすると、更新が同時トランザクションでタイムアウトまたはデッドロックする可能性があります。この場合は、アプリケーションによって、トランザクションをロールバックし、更新を再適用してください。
ttXlaCommit
この関数はXLAレプリケーション機能の一部であり、一般的なXLAアプリケーションでの使用には適していません。
説明
トランザクション・ログ・ハンドルに対して適用中の現行のトランザクションをコミットします。トランザクションが完了しているかどうかに関係なく、このルーチンはトランザクションをコミットします。このルーチンをコールすると、ttXlaApplyによってレポートされた一時的なエラー(タイムアウトまたはデッドロック)に応答でき、ttXlaApplyは、エラーが発生しなければ現在のトランザクションを適用します。
「タイムアウトおよびデッドロックのエラーへの対処」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaCommit(ttXlaHandle_h handle)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
rc = ttXlaCommit(xlahandle);
ttXlaGenerateSQL
この関数はXLAレプリケーション機能の一部であり、一般的なXLAアプリケーションでの使用には適していません。
ノート:
この関数は、現在はLOBロケータでは動作しません。
説明
更新レコードの結果を示すSQL DMLまたはDDL文を生成します。生成された文は、データベースには適用されません。かわりに、文は、最大サイズがmaxLenパラメータによって指定されている、指定のバッファに返されます。そのバッファの実際のサイズは、actualLenによって返されます。更新および削除のレコードの場合、正しいSQLを生成するために、ttXlaGenerateSQLには、NULL値可能でない列に対する主キー索引または一意索引が必要です。
生成されたSQL文は、XLAハンドルのODBC接続に関係付けられている接続文字セットでエンコードされます。
「TimesTen以外のデータベースに対する更新のレプリケート」も参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaGenerateSQL(ttXlaHandle_h handle,
ttXlaUpdateDesc_t* record,
out char* buffer,
SQLINTEGER maxLen,
out SQLINTEGER* actualLen)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
SQLに変換されるレコード |
|
|
|
|
変換されたSQL文の場所 |
|
|
|
バッファの最大長(バイト) |
|
|
|
バッファの実際の長さ(バイト) |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、更新レコードによって表現されるUPDATEに相当するSQL文のテキストを生成します。
ttXlaUpdateDesc_t record;
char buffer[200];
/*
* Get the desired update record into the varable record.
*/
SQLINTEGER actualLength;
rc = ttXlaGenerateSQL(xlahandle, &record, buffer, 200,
&actualLength);ノート
ttXlaGenerateSQL関数は、削除された表、またはレコードが生成された後で変更された表に関連付けられている更新レコードに対してはSQL文を生成できません。
ttXlaLookup
この関数はXLAレプリケーション機能の一部であり、一般的なXLAアプリケーションでの使用には適していません。
説明
この関数は、keysパラメータで指定されているキー値がある、指定された表内のレコードを検索します。keysおよびresultレコードの書式は、通常の行の書式と同じです。この関数では、基礎となる表に主キーが必要です。
必要な権限
XLA
構文
SQLRETURN ttXlaLookup(ttXlaHandle_h handle,
ttXlaTableDesc_t* table,
void* keys,
out void* result,
SQLINTEGER maxsize,
out SQLINTEGER* retsize)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
検索する表 |
|
|
|
|
表に対して定義された構造内のレコード 表の主キーの一部であるキー・レコードの列のみが調べられます。 |
|
|
|
検出されたレコードのコピー先 一致するキー列を持つレコードが存在しない場合は、エラーが返されます。 |
|
|
|
resultバッファに格納可能な最大レコードのサイズ |
|
|
|
レコードの実際のサイズ |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、一組の整数キー値を指定してレコードを調べます。このコールの前に、目的の表がtableに記述され、キー列が設定されているレコードがkeybufferに含まれている必要があります。
char keybuffer[100];
char recbuffer[2000];
ttXlaTableDesc_t table;
SQLINTEGER recordSize;
rc = ttXlaLookup(xlahandle, &table, keybuffer, recbuffer,
sizeof (recbuffer), &recordSize);ttXlaRollback
この関数はXLAレプリケーション機能の一部であり、一般的なXLAアプリケーションでの使用には適していません。
説明
トランザクション・ログ・ハンドルに対して適用中の現行のトランザクションをロールバックします。このルーチンをコールすると、ttXlaApplyによってレポートされた一時的なエラー(タイムアウトまたはデッドロック)に応答できます。
「タイムアウトおよびデッドロックのエラーへの対処」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaRollback(ttXlaHandle_h handle)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
rc = ttXlaRollback(xlahandle);
ttXlaTableCheck
この関数はXLAレプリケーション機能の一部であり、一般的なXLAアプリケーションでの使用には適していません。
説明
レプリケーション・メカニズムとしてXLAを使用する場合、この関数は、マスター・データベースから受信したttXlaTblDesc_t構造体内の名前付き表が、トランザクション・ログ・ハンドルに関連付けられているサブスクライバ・データベースまたはデータベースと互換性があることを検証します。compatパラメータは、表に互換性があるかどうかを示します。
「データベース間での表の互換性の確認」を参照してください。
必要な権限
XLA
構文
SQLRETURN ttXlaTableCheck(ttXlaHandle_h handle,
ttXlaTblDesc_t* table,
ttXlaColDesc_t* columns,
out SQLINTEGER* compat)パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
データベースのトランザクション・ログ・ハンドル |
|
|
表記述 |
|
|
|
表の列記述 |
|
|
|
|
互換性情報:
|
結果
コールが成功した場合は、SQL_SUCCESSが返されます。返されない場合は、ttXlaErrorを使用してエラーをレポートします。
例
この例では、表の互換性を確認します。
SQLINTEGER compat;
ttXlaTblDesc_t table;
ttXlaColDesc_t columns[20];
/*
* Get the desired table and column definitions into
* the variables "table" and "columns"
*/
rc = ttXlaTableCheck(xlahandle, &table, columns, &compat);
if (compat) {
/* Compatible */
}
else {
/*
* Not compatible or some other error occurred
*/
}