次の方法で共有


O2SS0221: ID シーケンス NEXTVAL の呼び出しがサポートされていません (エラー)

この記事では、SQL Server Migration Assistant (SSMA) for Oracle がシーケンスの関数を参照してプロシージャを変換しない理由について NEXTVAL 説明します。

背景

A SEQUENCE は Oracle の独立したデータベース オブジェクトであり、通常は主キー/外部値に対して一意の整数を自動的に作成します。 A NEXTVAL は、指定したシーケンスの次の値にアクセスするために使用されます。

SSMA では、オブジェクトを変換するときにSEQUENCE、シーケンスからシーケンスシーケンスから ID の 2 つの手法を使用できます。 SSMA がシーケンスに変換されると、各 Oracle シーケンスの対応する SEQUENCE オブジェクトが SQL Server スキーマに作成されます。 シーケンスから ID へのモードでは、SSMA は SQL Server にオブジェクトを作成SEQUENCEしないため、Oracle シーケンスをNEXTVAL呼び出してもエラー メッセージが表示されます。

次の例を確認してください。

CREATE OR REPLACE PROCEDURE proc1
AS
    t1 NUMBER;
BEGIN
    SELECT customers_seq.NEXTVAL INTO t1 FROM DUAL;
END;

ここでは、シーケンス customers_seqの次の値を取得しようとするストアド プロシージャがあります。 SSMA でシーケンスから ID へのモードが使用されている場合は、次のエラー メッセージが生成されます。

O2SS0221: ID シーケンス NEXTVAL の呼び出しはサポートされていません

考えられる対処方法

このエラーを解決するには、PL/SQL コードを書き直してアクセスを NEXTVAL排除するか、SSMA プロジェクト設定を変更して、ID 列ではなく SQL Server でオブジェクトを生成 SEQUENCE します。 後で実行するには:

  1. [ツール] メニューを選択し、[プロジェクト 設定] を選択します。
  2. 次に、[全般] タブを選択します。
  3. 次に、[シーケンス変換] グループで、[シーケンス ジェネレーターの変換] を [SQL Server シーケンス ジェネレーターの使用] に設定します。
  4. これらの設定を適用し、[OK] を選択 します