このストアドプロシージャを使用して、スキーマを修正する SQL スクリプトを実行します。
名前 | 値 | 説明 |
---|---|---|
publication_n (in) |
パブリケーション |
推奨されていません。代わりに subscription_n を使用します。同期されているパブリケーション (n は整数)。同期されるパブリケーションごとに 1 つの publication_n エントリがあります。n の番号は 0 から始まります。 |
MobiLink user (in) |
Mobile Link ユーザ名 |
同期対象となる Mobile Link ユーザ |
script version (in) |
スクリプトバージョンの名前 |
同期に使用されるスクリプトバージョン。 |
drop hook (out) |
never | always | on success |
次のいずれかの値を取ります。 never - (デフォルト) データベースから sp_hook_dbmlsync_schema_upgrade フックを削除しません。 always - フックの実行を試みた後、データベースから sp_hook_dbmlsync_schema_upgrade フックを削除します。 on success - フックの実行に成功した場合、データベースから sp_hook_dbmlsync_schema_upgrade フックを削除します。dbmlsync の -eh オプションが使用されている場合、dbmlsync の拡張オプション IgnoreHookErrors が True に設定されている場合、または IgnoreHookErrors 同期プロファイルオプションが on に設定されている場合、on success は always と同じです。 |
subscription_n (in) | サブスクリプション名 | 同期されているサブスクリプションの名前 (n は整数)。これは、同期される各サブスクリプションの subscription_n エントリです。n の番号は 0 から始まります。 |
このフックは、主に下位互換性のために提供されています。ScriptVersion 拡張オプションを使用していない場合は、START SYNCHRONIZATION SCHEMA CHANGE 文を使用することによって、このフックを使用せずにスキーマの変更を安全に実行することができます。
このフックを実装すると、dbmlsync はデフォルトで同期中のテーブルをロックします。
このストアドプロシージャは、配備されたリモートデータベースでスキーマの変更を行うためのものです。スキーマ更新のためにこのフックを使用すると、スキーマが更新される前にリモートデータベースのすべての変更が同期されます。そうされることによって、データベースの同期が確実に継続されます。このフックが使用中の場合、dbmlsync の拡張オプション LockTables を off に設定しないでください。
同期中に Mobile Link によってアップロードが正常に適用され、受信確認されると、このフックは sp_hook_dbmlsync_download_end フックの後、sp_hook_dbmlsync_end フックの前に呼び出されます。このフックは、ダウンロード専用の同期中、またはファイルベースのダウンロードが作成または適用されるときには呼び出されません。
このフックで実行されるアクションは、フックが完了した直後にコミットされます。このフックでコミットまたはロールバックを行っても安全です。
MANAGE REPLICATION システム権限を持つユーザが作成できるフックプロシージャ。ただし、フックによる情報のやり取りに使用される #hook_dict table にフックがアクセスできることを確認するには、フックが次のいずれかの要件を満たしている必要があります。
SELECT ANY TABLE および UPDATE ANY TABLE システム権限を持つユーザが所有します。
CREATE PROCEDURE 文の SQL SECURITY INVOKER 句を使用して定義されます。
次の例では、sp_hook_dbmlsync_schema_upgrade プロシージャを使用して、リモートデータベース上の Dealer テーブルにカラムを追加します。アップグレードが成功すると、sp_hook_dbmlsync_schema_upgrade フックは削除されます。
CREATE PROCEDURE sp_hook_dbmlsync_schema_upgrade() BEGIN -- Upgrade the schema of the Dealer table. Add a column: ALTER TABLE Dealer ADD dealer_description VARCHAR(128); -- Change the script version used to synchronize ALTER SYNCHRONIZATION SUBSCRIPTION sub1 SET SCRIPT VERSION='v2'; -- If the schema upgrade is successful, drop this hook: UPDATE #hook_dict SET value = 'on success' WHERE name = 'drop hook'; END; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |