プロジェクトの設定 (変換) (OracleToSQL)
[プロジェクト設定] ダイアログ ボックスの [変換] ページには、SSMA が Oracle 構文を SQL Server 構文に変換する方法をカスタマイズする設定が含まれています。
[変換] ウィンドウは、[プロジェクト設定] ダイアログ ボックスと [既定のプロジェクト設定] ダイアログ ボックスで使用できます。
すべての SSMA プロジェクトの設定を指定するには、[ツール] メニューの [既定のプロジェクト設定] を選択し、[移行先のバージョン] ドロップダウンから設定を表示/変更する必要がある移行対象のプロジェクト タイプを選択します。さらに左側のウィンドウの下部にある [全般] をクリックし、最後に [移行] をクリックします。
現在のプロジェクトの設定を指定するには、まず [ツール] メニューの [プロジェクト設定] を選択し、左側のウィンドウの下部にある [全般] をクリックし、最後に [変換] をクリックします。
組み込み関数と指定されたパッケージ
期間 | 定義 |
---|---|
COUNT 関数をCOUNT_BIGに変換する | COUNT 関数が 2,147,483,647 (2 31-1) を超える値を返す可能性がある場合は、関数をCOUNT_BIG に変換できます。[はい] を選択すると、SSMA によってすべての用途 COUNT_BIG の COUNT が変換されます。[いいえ] を選択した場合、関数は COUNT として残ります。 関数から 231-1 より大きい値が返された場合、SQL Server はエラーを返します。[モード] ボックスで変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/フル モード: はい オプティミスティック モード: いいえ |
SUBSTR 関数呼び出しを SUBSTRING 関数呼び出しに変換する | SSMA では、パラメーターの数に応じて、Oracle SUBSTR 関数呼び出しを SQL Server substring 関数呼び出しに変換できます。 SSMA が関数呼び出しを SUBSTR 変換できない場合、またはパラメーターの数がサポートされていない場合、SSMA は関数呼び出しを SUBSTR カスタム SSMA 関数呼び出しに変換します。[はい] を選択すると、SSMA は 3 つのパラメーターを使用する SUBSTR 関数呼び出しを substring SQL Server に変換します。 その他の 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 関数に TO_CHAR(date, format) を変換します。[TO_CHAR_DATE_LS 関数 (NLS ケア) の使用] を選択した場合、SSMA は変換にセッションを使用して TO_CHAR(date, format) 関数に TO_CHAR_DATE_LS を変換します。[モード] ボックスで変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: TO_CHAR_DATE 関数を使用する フル モード: TO_CHAR_DATE_L S関数の使用 (NLS ケア) |
DBMS_SQL のエラーを生成します。 | [エラー] を選択した場合、SSMA は DBMS_SQL.PARSE の変換時にエラーを生成します。[警告] を選択した場合、SSMA は DBMS_SQL.PARSE の変換時に警告を生成します。[モード] ボックスで変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック/フル モード: エラー |
CONCAT 関数呼び出しで ISNULL を使用する | ISNULL ステートメントは、Oracle の動作をエミュレートするために関数呼び出しで CONCAT 使用されます。 このオプション設定には次の値を使用できます。YES 使用不可 [モード] ボックスで変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: いいえ フル モード: はい |
REPLACE 関数呼び出しで ISNULL を使用する | ISNULL ステートメントは、Oracle の動作をエミュレートするために関数呼び出しで REPLACE 使用されます。 このオプション設定には次の値を使用できます。YES 使用不可 [モード] ボックスで変換モードを選択すると、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 句に変換し、その後に式を続けます。 Orcale DELETE ステートメントの ROWNUM の例を次に示します。DELETE FROM Table1 WHERE ROWNUM < expression and Field1 >= 2 次の例は、結果として得られる出力を示します。 DELETE TOP (expression-1) FROM Table1 WHERE Field1>=2 TOP は TOP 句の式が整数に評価される必要があります。 整数が負の場合、ステートメントはエラーを生成します。[はい]を選択すると、SSMA は式を整数としてキャストします。 [いいえ]を選択すると、SSMA は変換されたコード内のすべての非整数式をエラーとしてマークします。 [モード] ボックスで変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/フルモード: いいえ オプティミスティック モード: はい |
既定のスキーマ マッピング | この設定では、Oracle スキーマを SQL Server スキーマにマップする方法を指定します。 この設定では、次の 2 つのオプションを使用できます。 データベースへのスキーマ: このモードでは、Oracle スキーマ sch1 は既定 dbo で SQL Server データベース sch1 の SQL Server スキーマにマップされます。スキーマ間: このモードでは、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 では、値をチェックすることで Oracle ORDER BY の動作を NULL エミュレートできます。 次に、最初に指定した順序の値で NULL 並べ替え、次に他の値で並べ替えます。[はい] を選択すると、SSMA は Oracle の動作をエミュレートする方法で Oracle ORDER BY ステートメントを変換します。[いいえ] を選択すると、SSMA は Oracle ルールを無視し、and NULLS LAST 句が検出されたときにエラー メッセージをNULLS FIRST 生成します。[モード] ボックスで変換モードを選択すると、SSMA によって次の設定が適用されます。 既定/オプティミスティック モード: いいえ フル モード: はい |
SELECT で行数の例外をエミュレートする | INTO 句を SELECT 含むステートメントが行を返さない場合、Oracle は例外を NO_DATA_FOUND 発生させます。 ステートメントが 2 つ以上の行を返す場合、TOO_MANY_ROWS 例外が発生します。 SQL Server で変換されたステートメントでは、行数が 1 つのステートメントと異なる場合、例外は発生しません。[はい] を選択した場合、SSMA は各 SELECT ステートメントの後に特別なdb_error_exact_one_row_check プロシージャの呼び出しを追加します。 この手順では、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 に移行できます。 テーブルとオブジェクト テーブル ビューとオブジェクト ビュー システム ストアド プロシージャとシステム関数 具体化されたビュー 以下のオブジェクトのシノニムは解決され、直接オブジェクト参照に置き換えられます。 シーケンス パッケージ 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 の場合とは異なる場合があります。[いいえ] を選択すると、SSMA によって SELECT ステートメントの前に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 はステートメント内の UPDATE 句を句にOUTPUT 変換RETURNING します。 テーブルのトリガーによって値が変更される可能性があるため、SQL Server の戻り値は Oracle の場合とは異なる場合があります。[いいえ] を選択すると、SSMA によってステートメントの後に UPDATE ステートメントが生成され、返された値が取得されます。[モード] ボックスで変換モードを選択すると、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 の変換
期間 | 定義 |
---|---|
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 テーブル ] タブの ID 列へのシーケンス間のマッピングを指定する必要があります |
トリガーの外部で CURRVAL を変換する | [シーケンス ジェネレーターの変換] が [列 ID の使用] に設定されている場合にのみ表示されます。 Oracle シーケンスはテーブルとは別のオブジェクトであるため、シーケンスを使用する多くのテーブルでは、トリガーを使用して新しいシーケンス値を生成および挿入します。 SSMA は、これらのステートメントをコメントアウトするか、コメントアウトによってエラーが生成される場合にエラーとしてマークします。 [はい] を選択すると、SSMA は CURRVAL 変換されたシーケンスの外部トリガーへのすべての参照を警告でマークします。[いいえ] を選択すると、SSMA は CURRVAL 変換されたシーケンスの外部トリガーへのすべての参照をエラーでマークします。 |
ステートメントの変換
期間 | 定義 |
---|---|
MERGE ステートメントの変換 | [INSERT、UPDATE、DELETE ステートメントの使用]を選択した場合、SSMA は MERGE ステートメントを INSERT 、UPDATE 、DELETE ステートメントに変換します。[MERGE ステートメントの使用]を選択した場合、SSMA は SQL Server で MERGE ステートメントを 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 ステートメント、SUBPARTITION 、@dblink 、NOWAIT 句を含むPARTITION ステートメントを変換できません。また、そのようなステートメントを変換エラー メッセージでマークします。[はい] を選択すると、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 によって次の設定が適用されます。 既定/オプティミスティック/フル モード: はい |