バージョン 12.0.0 の新機能により、リモートデータベースに対するスキーマ変更の実行処理が大幅に簡略化されました。この機能を使用するには、dbmlsync の ScriptVersion 拡張オプションの使用を停止する必要があります。代わりに、CREATE SYNCHRONIZATION SUBSCRIPTION 文と ALTER SYNCHRONIZATION SUBSCRIPTION 文に追加された新しい句を使用して、スクリプトバージョンを同期サブスクリプションに直接関連付けてください。
新しい構文を使用すると、トランザクションの発生時にサブスクリプションに関連付けられたスクリプトバージョンを使用して、各データベーストランザクションがアップロードされます。これにより、スクリプトバージョンの変更に必要なスキーマ変更を、同期なしで実行できるようになります。
古い ScriptVersion 拡張オプションを使用すると、スクリプトバージョンは同期時にトランザクションに関連付けられます。したがって、スキーマ変更の前に同期が必要になります。
いくつかの同期システムは、スキーマ変更以外の理由により、同期間でサブスクリプションに使用されるスクリプトバージョンの変更に依存しています。このようなシステムは、新しい機能を使用して更新できないことがあります。
以降は、同期サブスクリプションを作成するときに、常に SCRIPT VERSION 句を指定することをおすすめします。既存のサブスクリプションは、以下に示す手順でアップグレードできます。
dbmlsync の ScriptVersion 拡張オプションを使用して同期する、my_sub という既存のサブスクリプションがある場合は、次の手順でスクリプトバージョンをサブスクリプションに直接関連付けます。
my_sub の同期に現在使用されているスクリプトバージョンを特定します。これを行う最も簡単な方法は、次のとおりです。
-v+ オプションを既存の dbmlsync コマンドラインに追加し、同期します。
dbmlsync 出力ファイルで、使用中のスクリプトバージョンを識別する行を見つけます。次のような行を探します。
Script version: my_script_ver_1 |
現在のスクリプトバージョンをサブスクリプションに関連付けます。
ALTER SYNCHRONIZATION SUBSCRIPTION <sub_name> SET SCRIPT VERSION = <ver> |
<sub_name> はサブスクリプション名 (この場合は my_sub) で、<ver> は手順 1 で特定した現在のスクリプトバージョンです。
これ以降に発生するトランザクションはすべて、スクリプトバージョンに関連付けられます。
古いオプションを使用して、最後にもう 1 回同期します。これにより、手順 2 を完了する前に発生したトランザクションが、正しいスクリプトバージョンで確実にアップロードされます。
このサブスクリプションに対して指定されている ScriptVersion 拡張オプションをすべて削除します。拡張オプションは、dbmlsync コマンドライン、同期プロファイルでは指定でき、リモートデータベースのサブスクリプション、パブリケーション、Mobile Link ユーザーには関連付けることができます。
複数のサブスクリプションが存在するデータベースでは、サブスクリプションごとに上記の手順を繰り返します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |