Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - クライアント管理 » Mobile Link クライアントの紹介 » SQL パススルー » SQL パススルーの概要 » スクリプトの実行

 

SQL Anywhere クライアントでスクリプトを手動で実行

手動で任意のスクリプトを実行できます。SQL Anywhere クライアントでスクリプトを手動で実行するには、sync_get_next_passthrough_script 関数と sync_execute_next_passthrough_script 関数を使用します。

sync_get_next_passthrough_script 関数はパラメータを取らず、次に実行するスクリプトの run_order を返します。そのスクリプトに関する情報を取得するには、dbo.sync_passthrough_script テーブルに問い合わせてください。

dbo.sync_passthrough_script テーブル

dbo.sync_passthrough_script テーブルは、次のように定義されています。

カラム名 説明
run_order

INTEGER。run_order パラメータによって、スクリプトをリモート・データベースに適用する順序が決まります。スクリプトは常に、run_order に従って順序どおりに適用されます。

この値は負でない整数にします。

script_id

INTEGER。この値はスクリプトをユニークに識別します。

script_name

VARCHAR(128)。スクリプトの名前。このカラムは、統合データベースで ml_add_passthrough_script を呼び出したときにスクリプトに対して指定した script_name の値と対応します。

flags

BIGINT。flags カラムは、ml_add_passthrough_script ストアド・プロシージャに渡される flags パラメータで指定された情報を格納します。指定されたフラグは、整数にコード化されます。コード化は、指定された各フラグを次に示す値に変換し、その値を OR 演算子で結合することによって行われます。

  • manual   スクリプトが手動実行モードでのみ実行できることを示します。デフォルトでは、すべてのスクリプトは自動実行モードと手動実行モードのどちらでも実行できます。

  • 排他   スクリプトがすべての同期対象テーブルに対する排他ロックが取得された、同期の最後に自動的に実行できることを示します。affected_pubs 値にパブリケーションが 1 つもリストされていない場合、このオプションは無視されます。このオプションは、SQL Anywhere リモートでのみ有効です。

  • schema_diff   スクリプトがスキーマ diff モードでのみ実行する必要があることを示します。このモードでは、スクリプト内に記述されたスキーマと一致するようにデータベース・スキーマが変更されます。たとえば、既存のテーブルに対する create 文は alter 文として扱われます。このフラグは、Ultra Light リモートで実行されるスクリプトにのみ適用されます。

affected_pubs

LONG VARCHAR。スクリプトの実行前に同期する必要があるパブリケーションのリスト。このカラムは、ml_add_passthrough_script を呼び出したときにスクリプトに対して指定した affected_pubs の値と対応します。

script

LONG VARCHAR。パススルー・スクリプトの内容。このカラムは、ml_add_passthrough_script を呼び出したときにスクリプトに対して指定した script の値と対応します。

description

VARCHAR(2000)。スクリプトのコメントまたは説明。このカラムは、ml_add_passthrough_script を呼び出したときにスクリプトに対して指定した description の値と対応します。

実行するスクリプトがもうない場合や、最後に実行したスクリプトでエラーが発生しても処理の続行方法に関する命令をサーバからまだ受け取っていない場合、sync_get_next_passthrough_script 関数は NULL を返します。

sync_execute_next_passthrough_script 関数はパラメータを取りません。この関数は、次のスクリプトを実行し、スクリプトの結果を後で統合データベースにアップロードできるように、データベース内の進行状況情報とステータス情報を更新します。最後のスクリプトがエラーを返し、エラーの処理方法に関する命令が Mobile Link サーバからまだ届いていない場合、スクリプトは実行されません。スクリプトが実行された場合、そのスクリプトの実行順序が返されます。スクリプトがまったく実行されなかった場合、NULL が返されます。スクリプトの結果の取得を参照してください。