[プロジェクト設定] ダイアログ ボックスの [変換] ページには、SSMA が SAP Adaptive Server Enterprise (ASE) 構文を SQL Server または Azure SQL 構文に変換する方法をカスタマイズする設定が含まれています。
[ 変換 ] ウィンドウは、[ プロジェクト設定] ダイアログ ボックスと [既定のプロジェクト設定] ダイアログ ボックスで使用できます。
すべての SSMA プロジェクトの設定を指定する場合は、[ ツール ] メニューの [既定のプロジェクト設定] を選択し、左側のウィンドウの下部にある [ 全般 ] をクリックし、[ 変換] をクリックします。
現在のプロジェクトの設定を指定するには、[ ツール ] メニューの [プロジェクト設定] を選択し、左側のウィンドウの下部にある [ 全般 ] をクリックし、[ 変換] をクリックします。
その他のセクション
エラーが発生しました
SQL Server/Azure SQL と ASE では、さまざまなエラー コードが使用されます。
この設定を使用して、ASE コードで @@ERROR
への参照が検出されたときに SSMA が [出力] または [エラー一覧] ウィンドウに表示するメッセージの種類 (警告またはエラー) を指定します。
- [変換] を選択 し、警告でマークすると、SSMA によってステートメントが変換され、警告コメントでマークされます。
- [ エラーでマーク] を選択した場合、SSMA は変換をスキップし、ステートメントにエラー コメントを付けます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 変換して警告を付ける |
楽天的 | 変換して警告を付ける |
完全 | エラーをマークする |
LIKE 演算子の変換
オペランドを SAP ASE の動作に一致するように変換するかどうかを指定します。 ポイントは、ASE が同様のパターンで末尾の空白をトリミングすることです。 回避策は、正しい式を最大有効桁数で固定長データ型にキャストすることです。
- [ 単純変換 ] を選択すると、修正せずに式を変換できます。
- ASE 動作を使用するには、[固定長にキャスト] を選択します。
[モード] ボックスで変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 単純な変換 |
楽天的 | 単純な変換 |
完全 | 固定長への型変換 |
CONVERT または CAST 空の文字列を数値型に変換する
データ型引数として数値型を持つ CONVERT
式または CAST
式内の空または空白の文字列を処理する方法を指定します。 この設定では、次のオプションを使用できます。
- [ 単純変換 ] を選択すると、修正せずに式を変換できます。
-
数値が 0 の空の文字列が選択されている場合、文字列パラメーター
{s}
はCASE ltrim(rtrim({s})) WHEN "" THEN 0 else {s} END
式に置き換えられます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 単純な変換 |
楽天的 | 単純な変換 |
完全 | 空の文字列を数値ゼロとして扱う |
NULL の連結
この設定では、文字列連結を NULL
で変換する方法を指定します。 この特定の設定には、次のオプションを設定できます。
-
ISNULL 関数で折り返しオプションが選択されている場合、連結内のすべての非定数
string_expression
はISNULL(string_expression)
でラップされ、NULL は空の文字列に置き換えられます。 - 現在の構文を保持 すると、元の構文が維持されます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 現在の構文を保持する |
楽天的 | 現在の構文を保持する |
完全 | ISNULL 関数でラップする |
空の文字列の変換
この設定では、空の文字列を変換する方法を指定します。 この特定の設定には、次のオプションを設定できます。
- すべての文字列式をスペースに置き換える
- 空の文字列定数をスペースに置き換える
SQL Server/Azure SQL の動作を使用するには、[ 現在の構文を保持する] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 現在の構文を保持する |
楽天的 | 現在の構文を保持する |
完全 | すべての文字列式をスペースに置き換える |
CONVERT および CAST バイナリ文字列変換
バイナリ値を数値に変換すると、プラットフォームごとに異なる値が返される可能性があります。 たとえば、x86 プロセッサでは、 CONVERT(integer, 0x00000100)
は ASE では 65536
を返しますが、SQL Server では 256
。 ASE では、バイト順に応じて異なる値も返されます。
SSMA がバイナリ値を含む CONVERT
式と CAST
式を変換する方法を制御するには、次の設定を使用します。
- [ 単純変換 ] を選択すると、警告や修正を行わずに式を変換できます。 ASE サーバーにバイト順があり、バイナリ値を変更する必要がないことがわかっている場合は、この設定を使用します。
- SSMA で変換し、SQL Server で使用する式を修正するには、[ 変換して修正 ] を選択します。 リテラル定数のバイト順は逆になります。 他のすべてのバイナリ値 (バイナリ変数や列など) は、エラーでマークされます。 ASE サーバーにバイナリ値の変更を必要とするバイトオーダーがあることがわかっている場合は、この値を使用します。
SSMA で式を変換して修正し、変換されたすべての式を警告コメントでマークするには、[ 変換 して警告でマークする] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 変換して警告を付ける |
楽天的 | 単純な変換 |
完全 | 変換して修正する |
動的 SQL
この設定を使用して、ASE コードで動的 SQL が検出されたときに SSMA が [出力 ] または [ エラー一覧 ] ウィンドウに表示するメッセージの種類 (警告またはエラー) を指定します。
- [変換] を選択 し、警告でマークすると、SSMA は動的 SQL を変換し、ステートメントに警告コメントを付けます。
- [ エラーでマーク] を選択した場合、SSMA は変換をスキップし、ステートメントにエラー コメントを付けます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 変換して警告を付ける |
楽天的 | 変換して警告を付ける |
完全 | エラーをマークする |
等値チェックの変換
SQL Server/Azure SQL では、ANSI_NULLS
設定がオンの場合、等値比較にUNKNOWN
値が含まれている場合、SQL Server/Azure SQL はNULL
を返します。
ANSI_NULLS
がオフの場合、比較列と式または 2 つの式の両方がNULL
されている場合、NULL
値を含む等値比較は true を返します。 既定では (ANSINULL OFF
) SAP ASE の等値比較は、 ANSI_NULLS OFF
を使用した SQL Server/Azure SQL と同様に動作します。
-
単純変換を選択した場合、SSMA は ASE コードを SQL Server/Azure SQL 構文に変換し、
NULL
値を追加でチェックしません。 この設定は、ANSI_NULLS
が SQL Server/Azure SQL でOFF
されている場合、またはケースごとに等価比較を変更する場合に使用します。 - [NULL 値の考慮] を選択した場合、SSMA は
NULL
句とIS NULL
句を使用して、IS NOT NULL
値のチェックを追加します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 単純な変換 |
楽天的 | 単純な変換 |
完全 | NULL 値を考慮する |
文字列の書式設定
SQL Server/Azure SQL では、format_string
ステートメントと PRINT
ステートメントのRAISERROR
引数がサポートされなくなりました。
format_string
引数を使用すると、置換可能なパラメーターを文字列に直接配置し、実行時にパラメーターを置き換えることができます。 代わりに、SQL Server では、文字列リテラルまたは変数を使用して構築された文字列を使用して、完全な文字列が必要です。 詳細については、 PRINT (Transact-SQL) トピックを参照してください。
SSMA は、 format_string
引数を検出すると、変数を使用して文字列リテラルを構築するか、新しい変数を作成し、その変数を使用して文字列を作成できます。
PRINT
関数とRAISERROR
関数に文字列リテラルを使用するには、[新しい文字列の作成] を選択します。このモードでは、PRINT ステートメントまたは RAISERROR ステートメントがプレースホルダーおよびローカル変数を使用しない場合、ステートメントは変更されません。 2 パーセント文字 (%%) は、PRINT 文字列リテラルで % 1 パーセント文字に変更されます。
PRINT ステートメントまたは RAISERROR ステートメントでプレースホルダーと 1 つ以上のローカル変数を使用する場合は、次の例を参照してください。
PRINT 'Total: %1!%%', @percent
SSMA では、次の構文に変換されます。
PRINT 'Total: '+ CAST(@percent AS varchar(max)) + '%'
次のステートメントのように、
format_string
が変数の場合:PRINT @fmt, @arg1, @arg2
SSMA は単純な文字列変換を実行できず、新しい変数を作成する必要があります。
DECLARE @print_format_1 varchar(max) SET @print_format_1 = REPLACE (@fmt, '%%', '%') SET @print_format_1 = REPLACE (@print_format_1, '%1!', CAST (@arg1 AS varchar(max))) SET @print_format_1 = REPLACE (@print_format_1, '%2!', CAST (@arg2 AS varchar(max))) PRINT @print_format_1
新しい文字列の作成モードを使用する場合、SSMA は SQL Server オプション
CONCAT_NULL_YIELDS_NULL
がOFF
と見なします。 したがって、SSMA は null 引数をチェックしません。SSMA で各
PRINT
およびRAISERROR
ステートメントの新しい変数を作成し、その変数を文字列値に使用するには、[ 新しい変数の作成] を選択します。このモードでは、
PRINT
ステートメントまたはRAISERROR
ステートメントでプレースホルダーとローカル変数が使用されていない場合、SSMA は、SQL Server/Azure SQL 構文に準拠するために、すべての 2% 文字 (%%
) を 1 パーセント文字に置き換えます。PRINT
またはRAISERROR
ステートメントでプレースホルダーと 1 つ以上のローカル変数を使用する場合は、次の例を参照してください。PRINT 'Total: %1!%%', @percent
SSMA では、次の構文に変換されます。
DECLARE @print_format_1 varchar(max) SET @print_format_1 = 'Total: %1!%' SET @print_format_1 = REPLACE (@print_format_1, '%1!', ISNULL(CAST (@percent AS VARCHAR(max)), '')) PRINT @print_format_1
次のステートメントのように、
format_string
が変数の場合:PRINT @fmt, @arg1, @arg2
SSMA では、次のように新しい変数が作成され、各引数で null 値がチェックされます。
DECLARE @print_format_1 varchar(max) SET @print_format_1 = REPLACE (@fmt, '%%', '%') SET @print_format_1 = REPLACE (@print_format_1, '%1!', ISNULL(CAST (@arg1 AS varchar(max)),'')) SET @print_format_1 = REPLACE (@print_format_1, '%2!', ISNULL(CAST (@arg2 AS varchar(max)),'')) PRINT @print_format_1
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 新しい文字列を作成する |
楽天的 | 新しい文字列を作成する |
完全 | 新しい変数を作成する |
タイムスタンプ列に明示的な値を挿入する
SQL Server/Azure SQL では、タイムスタンプ列への明示的な値の挿入はサポートされていません。
-
INSERT
ステートメントからタイムスタンプ列を除外するには、[列の除外] を選択します。 - タイムスタンプ列が
INSERT
ステートメント内にあるたびにエラー メッセージを出力するには、[ エラーでマークする] を選択します。 このモードでは、INSERT
ステートメントは変換されず、エラー コメントでマークされます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 列を除外する |
楽天的 | 列を除外する |
完全 | エラーをマークする |
プロシージャで定義されている一時オブジェクトを格納する
この設定では、プロシージャに表示される一時オブジェクト定義を変換時にソース メタデータに格納するかどうかを指定します。
- [ はい ] を選択してメタデータに格納します。
- オブジェクトを保存する必要がない場合は、[ いいえ] を選択します。
モード | 価値 |
---|---|
既定値 | イエス |
楽天的 | イエス |
完全 | いいえ |
プロキシ テーブルの変換
ASE プロキシ テーブルを SQL Server/Azure SQL テーブルに変換するか、変換せず、コードにエラー コメントが付いているかどうかを指定します。
- プロキシ テーブルを通常のテーブルに変換するには、[ 変換 ] を選択します。
- プロキシ テーブル コード にエラー コメントを 付けるだけの場合は、[エラーでマークする] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | エラーをマークする |
楽天的 | エラーをマークする |
完全 | エラーをマークする |
RAISERROR 基本メッセージ番号
ASE ユーザー メッセージは、各データベースに格納されます。 SQL Server ユーザー メッセージは、 sys.messages
カタログ ビューを通じて一元的に格納され、使用できるようになります。 さらに、ASE ユーザー メッセージは 20000
から始まりますが、SQL Server エラー メッセージは 50001
から開始されます。
この設定では、ASE ユーザー メッセージ番号に追加して SQL Server ユーザー メッセージに変換する番号を指定します。 SQL Server の sys.messages
カタログ ビューにユーザー メッセージがある場合は、この値を大きい値に変更する必要があります。 これは、変換されたメッセージ番号が既存のメッセージ番号と競合しないようにするためです。
次の点に注意してください。
-
17000
-19999
範囲内の ASE メッセージは、sysmessages
システム テーブルからのものであり、変換されません。 -
RAISERROR
ステートメントで参照されるメッセージ番号が定数の場合、SSMA は基本メッセージ番号を定数に追加して、新しいユーザー メッセージ番号を決定します。 - 参照されるメッセージ番号が変数または式の場合、SSMA は中間ローカル変数を作成します。
-
オプティミスティック モードでは、SSMA は、SQL Server オプションの
CONCAT_NULL_YIELDS_NULL
がOFF
であり、NULL
の引数チェックを行いません。 -
フル モードでは、SSMA は
NULL
引数をチェックします。 -
RAISERROR
が指定されたarg-list
引数は変換されません。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 30001 |
楽天的 | 30001 |
完全 | 30001 |
システム オブジェクト
この設定を使用して、ASE システム オブジェクトの使用が発生したときに SSMA が [出力 ] または [ エラー一覧 ] ウィンドウに表示するメッセージの種類 (警告またはエラー) を指定します。
- [変換] を選択 し、警告でマークすると、SSMA はシステム オブジェクトへの参照を変換し、ステートメントに警告コメントを付けます。
- [ エラーでマーク] を選択した場合、SSMA はシステム オブジェクトへの参照を変換せず、エラー コメントを含むステートメントをマークします。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 変換して警告を付ける |
楽天的 | 変換して警告を付ける |
完全 | エラーをマークする |
未解決の識別子
この設定を使用して、識別子を解決できない場合に SSMA が [出力 ] または [ エラー一覧 ] ウィンドウに表示するメッセージの種類 (警告またはエラー) を指定します。
- [変換して警告でマークする] を選択すると、SSMA は参照を未解決の識別子に変換しようと試み、ステートメントに警告コメントを付けます。
- [ エラーでマーク] を選択した場合、SSMA は参照を未解決の識別子に変換せず、ステートメントにエラー コメントを付けます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 変換して警告を付ける |
楽天的 | 変換して警告を付ける |
完全 | エラーをマークする |
システム関数セクション
CHARINDEX 関数
ASE では、すべての入力式がCHARINDEX
されている場合にのみ、NULL
はNULL
を返します。 入力式がNULL
されている場合、SQL Server/Azure SQL はNULL
を返します。
- ASE 動作を使用するには、[ 関数の置換] を選択します。
CHARINDEX
関数のすべての呼び出しは、SAP ASE の動作をエミュレートするために渡されたパラメーターの種類 (スキーマ名CHARINDEX_VARCHAR
の下にユーザー データベースで作成) に基づいて、CHARINDEX_NVARCHAR
またはs2ss
ユーザー定義関数の呼び出しに置き換えられます。 - SQL Server/Azure SQL の動作を使用するには、[ 現在の構文を保持する] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 現在の構文を保持する |
楽天的 | 現在の構文を保持する |
完全 | 置換関数 |
DATALENGTH 関数
SQL Server/Azure SQL と ASE では、値が 1 つの領域である場合に DATALENGTH
関数によって返される値が異なります。 この場合、SQL Server/Azure SQL は 0
を返し、ASE は 1
を返します。
- ASE 動作を使用するには、[ 関数の置換] を選択します。
DATALENGTH
関数のすべての呼び出しは、SAP ASE の動作をエミュレートするためにCASE
式に置き換わります。 - 既定の SQL Server/Azure SQL 動作を使用するには、[ 現在の構文を保持する] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 現在の構文を保持する |
楽天的 | 現在の構文を保持する |
完全 | 置換関数 |
INDEX_COL関数
ASE では、user_id
関数に対する省略可能なINDEX_COL
引数がサポートされていますが、SQL Server/Azure SQL ではこの引数はサポートされていません。
user_id
引数を使用する場合、この関数を SQL Server/Azure SQL 構文に変換することはできません。
- ASE 動作を使用するには、[ 関数の変換] を選択します。 コードに
user_id
引数が含まれている場合、SSMA にエラーが表示されます。 -
INDEX_COL
が発生するたびにエラー メッセージを表示するには、[エラーでマーク] を選択します。 SSMA は関数への参照を変換せず、ステートメントにエラー コメントを付けます。
モード | 価値 |
---|---|
既定値 | エラーをマークする |
楽天的 | エラーをマークする |
完全 | エラーをマークする |
INDEX_COLORDER関数
SQL Server/Azure SQL には、 INDEX_COLORDER
システム関数がありません。
- ASE 動作を使用するには、[ 関数の変換] を選択します。
INDEX_COLORDER
関数に対するすべての呼び出しは、SAP ASE の動作をエミュレートする同じ名前のINDEX_COLORDER
(スキーマ名s2ss
の下にユーザー データベースで作成) を持つユーザー定義関数の呼び出しに置き換えられます。 -
INDEX_COLORDER
が発生するたびにエラー メッセージを出力するには、[エラーでマーク] を選択します。 SSMA は関数への参照を変換せず、ステートメントにエラー コメントを付けます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | エラーをマークする |
楽天的 | エラーをマークする |
完全 | エラーをマークする |
LEFT 関数と RIGHT 関数
LEFT
および RIGHT
関数は、ASEでは負の長さのパラメーターに対して異なる動作をします。
- ASE 動作を使用するには、[ 関数の置換] を選択します。 length パラメーターは、負の値の
CASE
を返すNULL
式に置き換えられます。 - SQL Server の動作を使用するには、[ 現在の構文を保持する] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 現在の構文を保持する |
楽天的 | 現在の構文を保持する |
完全 | 置換関数 |
注
length パラメーターがリテラル値であり、複雑な式ではない場合、プロジェクト設定に関係なく、長さの値は常に NULL
に置き換えられます。
NEXT_IDENTITY関数
SQL Server/Azure SQL には、 NEXT_IDENTITY
システム関数がありません。
- ASE 動作を使用するには、[ 関数の変換] を選択します。
NEXT_IDENTITY
関数のすべての呼び出しは、SAP ASE の動作をエミュレートする式(IDENT_CURRENT(parameter Value) + IDENT_INCR(parameter Value)
に置き換わります。 -
NEXT_IDENTITY
が発生するたびにエラー メッセージを出力するには、[エラーでマーク] を選択します。 SSMA は関数への参照を変換せず、ステートメントにエラー コメントを付けます。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | エラーをマークする |
楽天的 | エラーをマークする |
完全 | エラーをマークする |
既定/オプティミスティック/フル モード: エラーでマークする
PATINDEX 関数
SAP ASE の動作 PATINDEX
一致するように関数を変換するかどうかを指定します。 ポイントは、ASE が検索パターンの末尾の空白をトリミングすることです。 回避策は、値式を最大有効桁数の固定長データ型にキャストし、 rtrim
関数を検索パターンに適用することです。
- ASE 動作を使用するには、[ 使用] を選択します。
- 既定の SQL Server/Azure SQL 動作を使用するには、[ 使用しない] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 使用しない |
楽天的 | 使用しない |
完全 | 用途 |
REPLICATE 関数
REPLICATE
関数は、指定した回数だけ文字列を繰り返します。 ASE では、文字列を 0 回繰り返すように指定した場合、結果は NULL
。 SQL Server/Azure SQL では、結果は空の文字列になります。
- ASE 動作を使用するには、[ 関数の置換] を選択します。
REPLICATE
関数のすべての呼び出しは、SAP ASE の動作をエミュレートするために渡されたパラメーターの種類 (スキーマ名REPLICATE_VARCHAR
の下にユーザー データベースで作成) に基づいて、REPLICATE_NVARCHAR
またはs2ss
ユーザー定義関数の呼び出しに置き換えられます。 - 既定の SQL Server/Azure SQL 動作を使用するには、[ 関数の置換] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 置換関数 |
楽天的 | 置換関数 |
完全 | 置換関数 |
TRIM (LTRIM,RTRIM) 関数
この設定では、 TRIM
、 LTRIM
、および RTRIM
関数の呼び出しを SAP ASE と同等の構文関数に置き換えるか、現在の構文を保持するかを指定します。 この特定の設定には、次のオプションがあります。
- 置換関数
- 現在の構文を保持する
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 置換関数 |
楽天的 | 置換関数 |
完全 | 置換関数 |
SUBSTRING 関数
ASE では、関数 SUBSTRING(expression, start, length)
は、式の文字数を超える開始値が指定されている場合、または長さが 0 の場合に NULL
を返します。 SQL Server/Azure SQL では、同等の式は空の文字列を返します。
- ASE 動作を使用するには、[ 関数の置換] を選択します。
SUBSTRING
関数へのすべての呼び出しは、SAP ASE 動作をエミュレートするために渡されたパラメーターの種類 (スキーマ名SUBSTRING_VARCHAR
SUBSTRING_NVARCHAR
の下にユーザー データベースで作成) に基づいて、SUBSTRING_VARBINARY
またはs2ss
またはユーザー定義関数の呼び出しに置き換えられます。 - SQL Server/Azure SQL の動作を使用するには、[ 現在の構文を保持する] を選択します。
[ モード] ボックス で変換モードを選択すると、SSMA によって次の設定が適用されます。
モード | 価値 |
---|---|
既定値 | 現在の構文を保持する |
楽天的 | 現在の構文を保持する |
完全 | 置換関数 |
テーブル項目
主キーを追加する
SAP ASE テーブルに主キーまたは一意のインデックスがない場合は、SQL Server または Azure SQL テーブルに新しい主キーを作成します。
モード | 価値 |
---|---|
既定値 | いいえ |
楽天的 | いいえ |
完全 | イエス |
注
Azure SQL に接続すると、既定では [はい ] になります。