この記事では、Oracle オブジェクトへの参照を含むステートメントを SQL Server Migration Assistant (SSMA) for Oracle SEQUENCE
で変換できない理由について説明します。
背景
A SEQUENCE
は、順序付けられた番号シーケンスを生成するために使用される Oracle オブジェクトです。 これは、ユーザーがテーブルの主キーまたは外部キーとして機能する一意の番号を作成する必要がある場合に便利です。
SSMA は、プロジェクトの SSMA ソース メタデータ内のシーケンス オブジェクトを見つけることができない場合に、エラー メッセージを表示します。
SSMA がソース メタデータ内のシーケンスを見つけることができないシナリオには、次の 2 つの可能性があります。
- Oracle データベースに接続するときに、オブジェクトが
SEQUENCE
インポート操作から除外されました。 - オブジェクトは
SEQUENCE
、データベース リンクを使用してリモート データベースに配置されます。
例
次の例を確認してください。
INSERT INTO employees (employeeid, lastname, Firstname)
VALUES(SQ1.nextval, 'David', 'Miller');
このクエリは、SSMA が SQL Server への移行を試みる Oracle で作成されたシーケンス SQ1
を参照します。 ただし、この SSMA がこのシーケンスの参照を見つけられない場合は、次のエラーが発生します。
O2SS0188: ソース メタデータにシーケンスが見つかりません
考えられる対処方法
このエラーは、Oracle の一部のセキュリティ機能または Oracle データベースとの接続中にいくつかの問題が原因で発生する可能性があります。 これを解決するには、SSMA が Oracle データベースに正しく接続されていること、およびトリガー、プロシージャ、特にシーケンスなどの Oracle データベースのすべてのオブジェクトが Oracle メタデータ エクスプローラーの下に表示されていることを確認する必要があります。
前の例では、Oracle メタデータ エクスプローラーを参照して、SSMA が Oracle データベースに適切にリンクされていることを確認します。 メタデータ エクスプローラーの [シーケンス] ノードに対応する必要なシーケンスが表示されない場合は、アクセス許可を使用DBA
して Oracle に再接続します。 参照されるシーケンスは、Oracle メタデータ エクスプローラーに表示されます。
参照する SEQUENCE
データベースがデータベース リンクを使用する別のデータベースにある場合、SSMA では、SQL Server で共有使用するためのシーケンスの直接移行はサポートされません。 代わりに、ソース データベースで再作成 SEQUENCE
し、クエリでデータベース リンク参照を削除してから、SSMA を使用して SQL Server データベースに変換 SEQUENCE
します。
関連する変換メッセージ
- O2SS0214: 列にバインドされたシーケンスがありますが、ソース メタデータにシーケンスが見つかりませんでした
- O2SS0217: ID シーケンスへの呼び出し CURRVAL がサポートされていません (エラー)
- O2SS0221: ID シーケンス NEXTVAL の呼び出しがサポートされていません (エラー)