Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
このストアドプロシージャを使用して、再スキャンがいつ必要かプログラム的に決定できます。
publication_n (in)
パブリケーション
推奨されていません。代わりに subscription_n を使用します。同期されているパブリケーション (n は整数)。同期されるパブリケーションごとに 1 つの publication_n エントリがあります。n の番号は 0 から始まります。
MobiLink user (in)
Mobile Link ユーザ名
同期対象となる Mobile Link ユーザ
discarded storage (in)
数値
最後の同期の後で破棄されるメモリのバイト数。
rescan (in|out)
フックによって True と設定されている場合、dbmlsync は次の同期の前に完全な再スキャンを行います。エントリ時には、この値は False に設定されます。
script version (in)
スクリプトバージョン名
同期に使用される Mobile Link スクリプトバージョン。
コマンドラインで複数の -n オプションまたは -s オプションを指定すると、メモリ破棄の原因となる断片化が dbmlsync で起きる可能性があります。破棄されたメモリは、データベーストランザクションログの再スキャンによってリカバリできます。このフックにより、dbmlsync を使用してデータベーストランザクションログの再スキャンを行いメモリを回復させるかどうかを決定できます。
再スキャンを強制する他の条件を満たさない場合、このフックは sp_hook_dbmlsync_process_exit_code フックの直後に呼び出されます。
MANAGE REPLICATION システム権限を持つユーザが作成できるフックプロシージャ。ただし、フックによる情報のやり取りに使用される #hook_dict table にフックがアクセスできることを確認するには、フックが次のいずれかの要件を満たしている必要があります。
SELECT ANY TABLE および UPDATE ANY TABLE システム権限を持つユーザが所有します。
CREATE PROCEDURE 文の SQL SECURITY INVOKER 句を使用して定義されます。
次の例では、破棄された記憶領域が 1000 バイトを超える場合にログスキャンが行われます。
CREATE PROCEDURE sp_hook_dbmlsync_log_rescan () BEGIN IF EXISTS(SELECT * FROM #hook_dict WHERE name = 'Discarded storage' AND value>1000) THEN UPDATE #hook_dict SET value ='true' WHERE name='Rescan'; END IF; END;