[プロジェクト設定] ダイアログ ボックスの [変換] ページには、SSMA が Oracle 構文を SQL Server 構文に変換する方法をカスタマイズする設定が含まれています。
[ 変換 ] ウィンドウは、[ プロジェクト設定] ダイアログ ボックスと [既定のプロジェクト設定] ダイアログ ボックスで使用できます。
すべての SSMA プロジェクトの設定を指定するには、[ ツール ] メニューの [既定のプロジェクト設定] をクリックし、[ 移行ターゲット バージョン ] ドロップダウンから設定を表示または変更する必要がある移行プロジェクトの種類を選択し、左側のウィンドウの下部にある [ 全般 ] をクリックして、[ 変換] をクリックします。
現在のプロジェクトの設定を指定するには、[ ツール ] メニューの [ プロジェクト設定] をクリックし、左側のウィンドウの下部にある [ 全般 ] をクリックし、[ 変換] をクリックします。
組み込み関数と指定されたパッケージ
任期 | 定義 |
---|---|
COUNT 関数をCOUNT_BIGに変換する |
COUNT 関数が 2,147,483,647 (231-1) を超える値を返す可能性がある場合は、関数をCOUNT_BIG に変換する必要があります。[はい] を選択すると、SSMA は COUNT のすべての用途をCOUNT_BIG に変換します。[いいえ] を選択した場合、関数は COUNT として残ります。 関数から 231-1 より大きい値が返された場合、SQL Server はエラーを返します。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/フル モード: はい オプティミスティック モード: いいえ |
SUBSTR 関数呼び出しを SUBSTRING 関数呼び出しに変換する | SSMA では、パラメーターの数に応じて、Oracle SUBSTR 関数呼び出しを SQL Server substring 関数呼び出しに変換できます。 SSMA が SUBSTR 関数呼び出しを変換できない場合、またはパラメーターの数がサポートされていない場合、SSMA は SUBSTR 関数呼び出しをカスタム SSMA 関数呼び出しに変換します。[はい] を選択すると、SSMA は、3 つのパラメーターを使用 SUBSTR 関数呼び出しを SQL Server substring に変換します。 他の SUBSTR 関数は、カスタム SSMA 関数を呼び出すために変換されます。[いいえ] を選択すると、SSMA は SUBSTR 関数呼び出しをカスタム SSMA 関数呼び出しに変換します。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: はい フル モード: いいえ |
TO_CHAR(date, format) 関数呼び出しを変換する | SSMA は Oracle TO_CHAR(date, format) をスキーマ ssma_oracle からプロシージャに変換できます。[TO_CHAR_DATE関数の使用] を選択した場合、SSMA は変換に英語を使用して TO_CHAR(date, format) をTO_CHAR_DATE 関数に変換します。[using TO_CHAR_DATE_LS function (NLS care)]\(TO_CHAR_DATE_LS関数の使用(NLS ケア)\) を選択した場合、SSMA は変換にセッション言語を使用して TO_CHAR(date, format) をTO_CHAR_DATE_LS 関数に変換します[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: TO_CHAR_DATE関数の使用 フル モード: TO_CHAR_DATE_LS関数の使用 (NLS 対応) |
DBMS_SQL.PARSE のエラーを生成する |
[エラー] を選択した場合、SSMA は変換DBMS_SQL.PARSE でエラーを生成します。[警告] を選択すると、変換 DBMS_SQL.PARSE で SSMA によって警告が生成されます。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: エラー |
CONCAT 関数呼び出しで ISNULL を使用する |
ISNULL ステートメントは、Oracle の動作 CONCAT エミュレートするために関数呼び出しで使用されます。 この設定には、次のオプションがあります。はい いいえ [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: いいえ フル モード: はい |
REPLACE 関数呼び出しで ISNULL を使用する |
ISNULL ステートメントは、Oracle の動作 REPLACE エミュレートするために関数呼び出しで使用されます。 この設定には、次のオプションがあります。はい いいえ [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: いいえ フル モード: はい |
可能な場合はネイティブ変換関数を使用する |
[はい] を選択した場合、SSMA は可能な限りTO_CHAR(date, format) をネイティブ変換関数に変換します。[いいえ] を選択した場合、SSMA は TO_CHAR(date, format) をTO_CHAR_DATE またはTO_CHAR_DATE_LS に変換します (TO_CHAR変換 (日付、形式) オプションで定義されます)。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: はい フル モード: いいえ |
変換メッセージ
任期 | 定義 |
---|---|
問題に関するメッセージを生成する | SSMA が変換中に情報メッセージを生成し、[出力] ウィンドウに表示し、変換されたコードに追加するかどうかを指定します。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: いいえ フル モード: いいえ |
その他のオプション
任期 | 定義 |
---|---|
ROWNUM 式を整数としてキャストする | SSMA ROWNUM 式を変換すると、式が TOP 句に変換され、その後に式が続きます。 次の例は、Oracle ROWNUM ステートメントのDELETE を示しています。DELETE FROM Table1 WHERE ROWNUM < expression and Field1 >= 2 次の例は、結果として得られる Transact-SQL を示しています。 DELETE TOP (expression-1) FROM Table1 WHERE Field1>=2 TOP では、TOP 句の式が整数に評価される必要があります。 整数が負の場合、ステートメントはエラーを生成します。[はい] を選択すると、SSMA は式を整数としてキャストします。 [いいえ] を選択すると、SSMA は変換されたコード内のすべての非整数式をエラーとしてマークします。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/フル モード: いいえ オプティミスティック モード: はい |
既定のスキーマ マッピング | この設定では、Oracle スキーマを SQL Server スキーマにマップする方法を指定します。 この設定では、次の 2 つのオプションを使用できます。 スキーマからデータベースへ:このモードでは、Oracle スキーマ sch1 は、既定で SQL Server データベース dbo の SQL Server スキーマsch1 にマップされます。スキーマからスキーマへ: このモードでは、Oracle スキーマ sch1 は、接続ダイアログで提供される既定の SQL Server データベースの SQL Server スキーマ sch1 既定でマップされます。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: スキーマからデータベースへ |
ORDER BY 句で Oracle の null 動作をエミュレートする |
NULL 値は、SQL Server と Oracle で順序が異なります。SQL Server では、 NULL 値は順序付きリストの中で最も低い値です。 昇順の一覧では、 NULL 値が最初に表示されます。Oracle では、 NULL 値は順序付きリストの中で最も高い値です。 既定では、 NULL 値は昇順の一覧の最後に表示されます。Oracle には NULLS FIRST 句と NULLS LAST 句があり、Oracle が NULL を順序付ける方法を変更できます。SSMA では、 ORDER BY 値をチェックすることで、Oracle NULL の動作をエミュレートできます。 次に、指定した順序で値 NULL 順に並べ替え、次に他の値で注文します。[はい] を選択すると、SSMA は Oracle ORDER BY 動作をエミュレートする方法で Oracle ステートメントを変換します。[いいえ] を選択した場合、SSMA は Oracle ルールを無視し、 NULLS FIRST 句と NULLS LAST 句が検出されたときにエラー メッセージを生成します。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: いいえ フル モード: はい |
SELECT で行数の例外をエミュレートする | INTO 句を含む SELECT ステートメントが行を返さない場合、Oracle は NO_DATA_FOUND 例外を発生させます。 ステートメントから 2 つ以上の行が返された場合、 TOO_MANY_ROWS 例外が発生します。 SQL Server で変換されたステートメントでは、行数が 1 つのステートメントと異なる場合、例外は発生しません。[はい] を選択した場合、SSMA では、各 db_error_exact_one_row_check ステートメントの後に特別なSELECT プロシージャへの呼び出しが追加されます。 この手順では、 NO_DATA_FOUND と TOO_MANY_ROWS 例外をエミュレートします。 これは既定値であり、Oracle の動作を可能な限り近づけて再現できます。 ソース コードにこれらのエラーを処理する例外ハンドラーがある場合は、常に [はい ] を選択する必要があります。
SELECT ステートメントがユーザー定義関数内で発生した場合、ストアド プロシージャの実行と例外の発生は SQL Server 関数コンテキストと互換性がないため、このモジュールはストアド プロシージャに変換されることに注意してください。[ いいえ] を選択した場合、例外は生成されません。 これは、SSMA がユーザー定義関数を変換し、SQL Server で関数のままにしたい場合に便利です [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
修正アドバイザーを有効にする | 有効にすると、SSMA はターゲット T-SQL コードで行った変更から学習を試み、同様のパターンを適用できる別の場所で潜在的なコード修正を提案します。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
定数式列の別名を生成する |
SELECT リスト内の式にエイリアスがない場合、SSMA は定数エイリアス (expr1 、expr2 など) を生成したり、式自体をエイリアスとして使用したりできます。 式はかなり長くなる可能性があり、列名の長さは制限されているため、このようなエイリアスには定数ベース名を使用する方が安全です。 安全なオプションですが、結果のデータセットに外部依存関係が存在する可能性があるため、不可能な場合があります。 このような場合は、Oracle の動作と同様に、値の式に従って列に名前を付ける必要があります。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: はい フル モード: いいえ |
拡張プロパティを省略する | 有効にすると、SSMA はターゲット データベースに作成するオブジェクトに拡張プロパティを追加しません。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: いいえ |
エラー コードを翻訳する | 有効にすると、マッピングが見つかった場合、ターゲット SQL Server 側のエラー番号が Oracle エラー コードに変換されます。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/フル モード: はい オプティミスティック モード: いいえ |
型参照に完全な型指定を使用する | 有効にすると、SSMA では、ルーチン パラメーターと戻り値の完全な型指定 (スケールと精度を含む) が考慮されます。 Oracle では、ルーチン パラメーターのデータ型引数は許可されませんが、 %TYPE 属性や %ROWTYPE 属性が使用されている場合など、暗黙的に派生できる場合があります。 このような場合、SSMA は SQL Server に変換するときに、完全な型指定 (有効桁数と小数点以下桁数を含む) を使用できます。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: はい フル モード: いいえ |
文字列連結で ISNULL を使用する | 文字列連結に NULL 値が含まれている場合、Oracle と SQL Server は異なる結果を返します。 Oracle は、 NULL 値を空の文字セットのように扱います。 SQL Server は NULL を返します。[はい] を選択すると、SSMA によって Oracle 連結文字 (||) が SQL Server 連結文字 (+) に置き換えられます。 SSMA では、連結の両側で NULL 値の式もチェックされます。[いいえ] を選択した場合、SSMA は連結文字を置き換えますが、 NULL 値をチェックしません。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
オブジェクト変換
任期 | 定義 |
---|---|
NULL でない列に対する SET NULL 参照アクションを使用して外部キーを変換する | Oracle では外部キー制約を作成できます。参照先の列で NULL が許可されていないため、 SET NULL アクションを実行できなかった可能性があります。 SQL Server では、このような外部キーの構成は許可されません。[はい] を選択すると、SSMA は Oracle と同様に参照アクションを生成しますが、SQL Server に制約を読み込む前に手動で変更する必要があります。 たとえば、 NO ACTION ではなくSET NULL を選択できます。[いいえ] を選択すると、制約はエラーとしてマークされます。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: いいえ |
サブタイプの変換 | SSMA では、次の 2 つの方法で PL/SQL サブタイプを変換できます。 [はい] を選択すると、SSMA はサブタイプから SQL Server ユーザー定義型を作成し、このサブタイプの各変数に使用します。 [いいえ] を選択すると、SSMA はサブタイプのすべてのソース宣言を基になる型に置き換え、通常どおり結果を変換します。 この場合、SQL Server では追加の型は作成されません [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: いいえ |
シノニムの変換 | 次の Oracle オブジェクトのシノニムを SQL Server に移行できます。 テーブルとオブジェクトのテーブル ビューとオブジェクトビュー ストアド プロシージャと関数 マテリアライズド・ビュー 次のシノニム Oracle オブジェクトは、オブジェクトへの直接参照に置き換えることができます。 シーケンス パッケージ Java クラススキーマオブジェクト ユーザー定義オブジェクト型 他のシノニムは移行できません。 SSMA では、シノニムとシノニムを使用するすべての参照に関するエラー メッセージが生成されます。 [はい] を選択すると、SSMA は前の一覧に従って SQL Server シノニムと直接オブジェクト参照を作成します。 [いいえ] を選択すると、SSMA はここに記載されているすべてのシノニムの直接オブジェクト参照を作成します。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
ローカル モジュールの変換 | Oracle の入れ子になったサブプログラム (スタンドアロン ストアド プロシージャまたは関数で宣言) 変換の種類を定義します。 [インライン] を選択すると、入れ子になったサブプログラム呼び出しが本文に置き換えられます。 ストアド プロシージャを選択すると、入れ子になったサブプログラムが SQL Server ストアド プロシージャに変換され、その呼び出しはこのプロシージャ呼び出しで置き換えられます。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: インライン |
レコード変換
任期 | 定義 |
---|---|
レコードを区切り変数のリストとして変換する | SSMA では、Oracle レコードを個別の変数に変換し、特定の構造を持つ XML 変数に変換できます。 [はい] を選択した場合、SSMA は可能であれば、レコードを分離変数の一覧に変換します。 [いいえ] を選択すると、SSMA はレコードを特定の構造の XML 変数に変換します。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
レコード変数を変換する際は、SELECT INTO を SELECT FOR XML を使用して活用してください | レコード変数を選択するときに XML 結果セットを生成するかどうかを指定します。 [はい] を選択すると、SELECT ステートメントは XML を返します。 [いいえ] を選択すると、SELECT ステートメントによって結果セットが返されます。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: いいえ |
RETURNING 句の変換
任期 | 定義 |
---|---|
DELETE ステートメントの RETURNING 句を OUTPUT に変換する | Oracle は、削除された値をすぐに取得する方法として、 RETURNING 句を提供します。 SQL Server では、その機能に OUTPUT 句が用意されています。[はい] を選択すると、SSMA は RETURNING ステートメントのDELETE 句をOUTPUT 句に変換します。 テーブルのトリガーによって値が変更される可能性があるため、SQL Server の戻り値は Oracle の場合とは異なる場合があります。[いいえ] を選択すると、返された値を取得するステートメントを SELECT する前に、SSMA によってDELETE ステートメントが生成されます。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
INSERT ステートメントの RETURNING 句を OUTPUT に変換する | Oracle は、挿入された値をすぐに取得する方法として、 RETURNING 句を提供します。 SQL Server では、その機能に OUTPUT 句が用意されています。[はい] を選択すると、SSMA は RETURNING ステートメントのINSERT 句をOUTPUT に変換します。 テーブルのトリガーによって値が変更される可能性があるため、SQL Server の戻り値は Oracle の場合とは異なる場合があります。[いいえ] を選択した場合、SSMA は参照テーブルから値を挿入して選択することで Oracle 機能をエミュレートします。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
UPDATE ステートメントの RETURNING 句を OUTPUT に変換する | Oracle は、更新された値をすぐに取得する方法として、 RETURNING 句を提供します。 SQL Server では、その機能に OUTPUT 句が用意されています。[はい] を選択すると、SSMA は RETURNING ステートメントのUPDATE 句をOUTPUT 句に変換します。 テーブルのトリガーによって値が変更される可能性があるため、SQL Server の戻り値は Oracle の場合とは異なる場合があります。[いいえ] を選択した場合、SSMA は、戻り値を取得するステートメント UPDATE 後に SELECT ステートメントを生成します。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
ROWID の生成
任期 | 定義 |
---|---|
ROWID 列の生成 | SSMA は、SQL Server でテーブルを作成するときに、ROWID 列を作成できます。 データが移行されると、各行はUNIQUEIDENTIFIER 関数によって生成された新しいnewid() 値を取得します。[はい] を選択すると、すべてのテーブルに ROWID 列が作成され、SQL Server によって挿入値として GUID が生成されます。 SSMA テスターの使用を計画している場合は、必ず [はい ] を選択します。[いいえ] を選択した場合、ROWID 列はテーブルに追加されません。 トリガーを含むテーブルに ROWID 列を追加します ROWID [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: トリガーを含むテーブルの ROWID 列を追加する フル モード: はい |
ROWID 列で一意のインデックスを生成する | SSMA が生成された列に対して一意のインデックス列 ROWID 生成するかどうかを指定します。 オプションが "YES" に設定されている場合、一意のインデックスが生成され、"NO" に設定されている場合、 ROWID 列に一意のインデックスは生成されません。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
シーケンスとアイデンティティの変換
任期 | 定義 |
---|---|
ID を次のように変換する | Oracle には、ID 列に対して複数の構成オプションが用意されています。 これらのオプションの一部は、SQL Server の ID 機能ではサポートされていません。 これらのオプションを保持する方法は、ID をシーケンスとして変換することです。 [シーケンス] を選択すると、Oracle ID 列は SQL ID 列に変換されなくなります。 代わりに、シーケンスが作成され、列の既定値を生成するために使用されます。 [ID] を選択すると、Oracle ID 列が SQL ID 列に変換されます。 サポートされていないオプションは変換されません。 Best Fit を選択した場合、SSMA は Oracle ID 列の構成に応じて最適な変換方法 (ID またはシーケンス) を決定します。 |
シーケンス ジェネレーターの変換 | Oracle では、シーケンスを使用して一意の識別子を生成できます。 SSMA はシーケンスを次のように変換できます。 SQL Server シーケンス ジェネレーターの使用。 SSMA シーケンス ジェネレーターの使用。 列 ID の使用。 既定のオプションは、SQL Server シーケンス ジェネレーターを使用することです。 ただし、SQL Server では、現在のシーケンス値 (Oracle シーケンス CURRVAL メソッドなど) の取得はサポートされていません。 Oracle シーケンス CURRVAL 方法の移行に関するガイダンスについては、SSMA チームのブログ サイトを参照してください。SSMA には、Oracle シーケンスを SSMA シーケンス エミュレーターに変換するオプションも用意されています。 これは、2012 より前の SQL Server に変換する場合の既定のオプションです 最後に、テーブル内の列に割り当てられたシーケンスを SQL Server ID 値に変換することもできます。 Oracle テーブルタブでシーケンスを識別子列に対応付ける必要があります |
トリガーの外部で CURRVAL を変換する |
[シーケンス ジェネレーターの変換] が [列 ID の使用] に設定されている場合にのみ表示されます。 Oracle シーケンスはテーブルとは別のオブジェクトであるため、シーケンスを使用する多くのテーブルでは、トリガーを使用して新しいシーケンス値を生成および挿入します。 SSMA は、これらのステートメントをコメントアウトするか、コメントアウトによってエラーが生成される場合にエラーとしてマークします。 [はい] を選択すると、SSMA によって、変換されたシーケンス CURRVAL の外部トリガーへのすべての参照に警告が表示されます。[いいえ] を選択すると、SSMA によって、変換されたシーケンス CURRVAL の外部トリガーへのすべての参照がエラーとしてマークされます。 |
ステートメントの変換
任期 | 定義 |
---|---|
MERGE ステートメントの変換 |
INSERT、UPDATE、DELETE ステートメントの使用を選択した場合、SSMA はステートメントMERGE INSERT 、UPDATE 、DELETE ステートメントに変換します。[USING MERGE statement]\(MERGE ステートメントの使用\) を選択した場合、SSMA は MERGE ステートメントを SQL Server の MERGE ステートメントに変換します。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: MERGE ステートメントの使用 |
既定の引数を使用するサブプログラムへの呼び出しの変換 | SQL Server 関数は、関数呼び出しでのパラメーターの省略をサポートしていません。 また、SQL Server の関数とプロシージャは、既定のパラメーター値として式をサポートしていません。 [はい] を選択し、関数呼び出しでパラメーターが省略された場合、SSMA はキーワードの既定値を関数に挿入し、正しい位置で呼び出します。 その後、呼び出しに警告が表示されます。 [いいえ] を選択すると、SSMA によって関数呼び出しがエラーとしてマークされます。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
FORALL ステートメントを WHILE ステートメントに変換する | SSMA が PL/SQL コレクション要素 FORALL ループを処理する方法を定義します。[はい] を選択すると、SSMA によって WHILE ループが作成され、コレクション要素が 1 つずつ取得されます。[いいえ] を選択すると、SSMA は nodes() メソッドを使用してコレクションから行セットを生成し、それを 1 つのテーブルとして使用します。 これはより効率的ですが、出力コードの読みやすさが低下します。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: いいえ フル モード: はい |
関数呼び出しをプロシージャ呼び出しに変換する | 一部の Oracle 関数は、自律トランザクションとして定義されているか、SQL Server では無効なステートメントを含みます。 このような場合、SSMA はプロシージャと、プロシージャのラッパーである関数を作成します。 変換された関数は、実装プロシージャを呼び出します。 SSMA では、ラッパー関数の呼び出しをプロシージャの呼び出しに変換できます。 これにより、読みやすいコードが作成され、パフォーマンスが向上します。 ただし、コンテキストでは常に許可されるとは限りません。たとえば、リスト内の関数呼び出しをプロシージャ呼び出し SELECT 置き換えることはできません。 SSMA には、一般的なケースに対応するいくつかのオプションがあります。[常に] を選択すると、SSMA はラッパー関数呼び出しをプロシージャ呼び出しに変換しようとします。 現在のコンテキストでこの変換が許可されていない場合は、エラー メッセージが生成されます。 これにより、生成されたコードに関数呼び出しは残されません。 可能な限り選択すると、SSMA は関数に出力パラメーターがある場合にのみプロシージャ呼び出しに移動します。 移動できない場合は、パラメーターの出力属性が削除されます。 それ以外のすべての場合、SSMA は関数呼び出しを残します。 [なし] を選択すると、SSMA はすべての関数呼び出しを関数呼び出しとして残します。 パフォーマンス上の理由から、この選択が受け入れられない場合があります。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: 可能な場合 |
LOCK TABLE ステートメントを変換する | SSMA では、多くの LOCK TABLE ステートメントをテーブル ヒントに変換できます。 SSMA は、LOCK TABLE 、PARTITION 、SUBPARTITION 、および@dblink 句を含むNOWAIT ステートメントを変換できません。また、そのようなステートメントは変換エラー メッセージでマークされます。[はい] を選択すると、SSMA はサポートされている LOCK TABLE ステートメントをテーブル ヒントに変換します。[いいえ] を選択すると、SSMA はすべての LOCK TABLE ステートメントに変換エラー メッセージをマークします。次の表は、SSMA が Oracle ロック モードを変換する方法を示しています。 Oracle ロック モード ROW SHARE ROW EXCLUSIVE SHARE UPDATE = ROW SHARE SHARE SHARE EXCLUSIVE SQL Server テーブル ヒント ROWLOCK, HOLDLOCK ROWLOCK, XLOCK, HOLDLOCK ROWLOCK, HOLDLOCK TABLOCK, HOLDLOCK TABLOCK, XLOCK, HOLDLOCK TABLOCKX, HOLDLOCK [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
REF CURSOR OUTパラメーターのOPEN-FORステートメントを変換する | Oracle では、OPEN .. FOR ステートメントを使用して、OUT 型のサブプログラムの REF CURSOR パラメーターに結果セットを返すことができます。 SQL Server では、ストアド プロシージャは SELECT ステートメントの結果を直接返します。SSMA は、多くの OPEN .. FOR ステートメントを SELECT ステートメントに変換できます。[はい] を選択すると、SSMA によって OPEN .. FOR ステートメントが SELECT ステートメントに変換され、結果セットがクライアントに返されます。[いいえ] を選択すると、変換されたコードと出力ペインにエラー メッセージが SSMA によって生成されます。 [ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |
トランザクション処理ステートメントの変換 | SSMA では、Oracle トランザクション処理ステートメントを変換できます。 [はい] を選択すると、SSMA は Oracle トランザクション処理ステートメントを SQL Server ステートメントに変換します。 [いいえ] を選択すると、SSMA はトランザクション処理ステートメントを変換エラーとしてマークします。 手記: Oracle はトランザクションを暗黙的に開きます。 SQL Server でこの動作をエミュレートするには、トランザクションを開始する BEGIN TRANSACTION ステートメントを手動で追加する必要があります。 または、セッションの開始時に SET IMPLICIT_TRANSACTIONS ON コマンドを実行することもできます。 SSMA では、自律トランザクションを使用してサブルーチンを変換するときに、 SET IMPLICIT_TRANSACTIONS ON が自動的に追加されます。[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |