SnowConvert AI - SQL Server-Azure Synapseの機能の違い¶
Applies to
SQL Server
Azure Synapse Analytics
SSC-FDM-TS0001¶
注釈
この FDM は非推奨です。 SSC-EWI-TS0077 ドキュメントをご参照ください。
説明¶
このメッセージは、Snowflakeでサポートされていないcollate句がある場合に表示されます。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0002¶
説明¶
このメッセージは、Snowflakeでサポートされていないcollate句がある場合に表示されます。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0003¶
XP_LOGININFO がカスタム UDF にマッピングされています
説明¶
このメッセージは、XP_LOGININFO プロシージャが実行され、次の列セットが返される場合に表示されます(詳細については SQL SERVER のドキュメントを参照)
| account name | type | privilege | mapped login name | permission path |
To replicate this behavior, there is a query that select the columns from the APPLICABLE_ROLES view in Snowflake, which returns the following set of columns (See Snowflake documentation for more info)
GRANTEE |
ROLE_NAME |
ROLE_OWNER |
IS_GRANTABLE |
|---|
SQL Serverの元の列は、次の表に示すようにマッピングされます。両者は完全には等価でない場合があります。
| SQL Server | Snowflake | |
|---|---|---|
| account name | GRANTEE | |
| type | ROLE_OWNER | |
| privilege | ROLE_NAME | |
| mapped login name | GRANTEE | |
| permission path | NULL |
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0004¶
説明¶
This message is shown when a BULK INSERT was transformed and a PUT command is added to the output code. It happens because the PUT command cannot be executed using the SnowSQL Web UI. To successfully execute it, any user should have the SnowCLI installed before.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
SnowCLI をインストールします。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0005¶
TRY_CONVERT/TRY_CAST が TRY_CAST に変換されませんでした
説明¶
This FDM is added when a TRY_CONVERT or TRY_CAST cannot be converted to a TRY_CAST in Snowflake.
Snowflakeの TRY_CAST 関数には、文字式しか変換できないという制限があります。一方、Transactの TRY_CONVERT および TRY_CAST 関数はあらゆるデータ型の式が可能です。
現在、TRY_CONVERT または TRY_CAST からSnowflakeの TRY_CAST への変換は、文字列式またはツールがそのコンテキストで文字列として識別できる式に対してのみ実行されます。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0006¶
EXECUTE AS 'user_name' 句はSnowflakeには存在せず、プロシージャを呼び出すユーザーは必要なすべての権限を持っている必要があります。
説明¶
このメッセージは、SnowConvert AI が EXECUTE AS 'user_name' 句を含むプロシージャを見つけたときに表示されます。これはSnowflakeではサポートされていないため、 EXECUTE AS CALLER に変更されます。
この句は、プロシージャを実行するセキュリティコンテキストを指定します
注釈
詳細については、この句の機能に関する ドキュメント をご参照ください。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0007¶
FOR REPLICATION 句はSnowflakeには存在しません。
説明¶
このメッセージは、SnowConvert AI が FOR REPLICATION 句を含むプロシージャを見つけたときに表示されます。これはSnowflakeではサポートされていないため、削除されます。
この句は、そのプロシージャが複製用に作成されていることを明示します。その結果、サブスクライバー上で実行することはできません。
注釈
詳細については、この句の機能に関する ドキュメント をご参照ください。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0008¶
FORMATMESSAGE 関数が UDF に変換されました
説明¶
この警告は、FORMATMESSAGE 関数が使用されており、それが FORMATMESSAGE_UDF に置き換えられたために追加されています。警告を追加する理由は、FORMATMESSAGE を置き換えるために使用される FORMATMESSAGE_UDF が、すべての種類の形式は適切に処理できず、特定の条件下でエラーを投げる可能性があるためです。
負として与えられた符号なし数値は、値を変換する代わりに符号を保持します。また、%I64d プレースホルダーは、UDF ではサポートされていないため、使用するとエラーとなります。
In the FORMATMESSAGE_UDF, an error will happen if the given number of arguments is different than the number of placeholders.
この UDF は、メッセージ番号 IDs の使用をサポートしていません。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
メッセージの中で
%I64dプレースホルダーは使わないでください。最初の引数にメッセージ ID を使う代わりに、メッセージを直接文字列として使います。
プレースホルダーの数が、メッセージの後の引数の数と確実に同じであるようにしてください。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0009¶
暗号化はSnowflakeではサポートされていません。
説明¶
この警告は、列定義で ENCRYPTED WITH が使用されている場合に追加されます。これはSnowflakeではサポートされていないため、削除され、警告が追加されています。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0010¶
CURRENT_DATABASE 関数は特定のケースで異なる動作をします。
説明¶
この EWI は、関数 DB_NAME を CURRENT_DATABASE に変換するときに追加されます。これは、Snowflakeがdatabase_idパラメーターをサポートしておらず、CURRENT_DATABASE 関数が常に現在のデータベース名を返すためです。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0011¶
Snowflakeではデフォルト値は使用できません。
注釈
この FDM は非推奨です。 SSC-EWI-TS0078 ドキュメントをご参照ください。
説明¶
このエラーは、関数呼び出し、変数名、名前付き定数などの式がデフォルトオプションに従う場合にコードに追加されます。
Snowflakeでは、数値や文字列のような明示的な定数のみをサポートしています。
コード例¶
入力コード:¶
生成されたコード:¶
¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0012¶
列の情報が見つかりませんでした。CAST 操作に合わせて STRING が使用されました
説明¶
この EWI は、テーブル値ユーザー定義関数で、変換中に列の戻り値の型が特定できない場合に追加されます。 SELECT ステートメントの CAST 操作に合わせて、デフォルトで STRING が使用されます。<!--TODO: search for a broken reference.->
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーは、見つからなかった正しいデータ型がどれかをチェックし、
RETURNS TABLEステートメント定義で変更する必要があります。さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0013¶
Snowflakeスクリプトのカーソル行は変更できません。
説明¶
この EWI は、カーソルが入力コードでの変更を受け入れているときに追加されます。Snowflakeスクリプトでは、カーソル行を変更することはできません。
コード例:¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0014¶
計算された列の変換
説明¶
この警告は、SQL Serverの計算された列がSnowflakeの同等の列に変換されるときに追加されます。これが追加されるのは、場合により、機能的同等性に影響が出る可能性があるためです。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要なく、ただ情報を提供するだけです。
変換されていない式に手動で変更を加えます。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0016¶
XML Snowflakeの列は形式が異なる可能性があります。
説明¶
This warning is added when an SQL Server FOR XML clause with a non-empty path is transformed to its Snowflake equivalent using FOR_XML_UDF. It is added because columns in XML could be different.
注釈
FOR XML PATH('') (empty path without a ROOT clause) is a common SQL Server string concatenation pattern and is not an XML generation scenario. These cases are transformed to LISTAGG instead of FOR_XML_UDF, and this FDM is not emitted. See the SELECT FOR section for details.
コード例¶
employee という次のテーブルを例として考えます。
Id |
名前 |
Hint |
|---|---|---|
1 |
Kinslee Park |
開発者 |
2 |
Ezra Mata |
開発者 |
3 |
Aliana Quinn |
Manager |
入力コード:¶
コード¶
出力¶
生成されたコード:¶
コード¶
出力¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要なく、ただ情報を提供するだけです。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0017¶
CURRENT_USER 関数は、パラメーターとしてユーザー ID をサポートしていません。
説明¶
この EWI は、 SUSER_NAME または SUSER_SNAME などの関数にパラメーターとしてユーザー識別子が含まれる場合に追加されます。Snowflakeでは CURRENT_USER 関数でこの最後の1つがサポートされていないためです。
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要ありません。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0018¶
データベースコンソールコマンドはサポートされていません
注釈
この FDM は非推奨です。 SSC-EWI-TS0079 ドキュメントをご参照ください。
説明¶
This FDM is added when SnowConvert AI finds a DBCC statement inside the input code.
Most DBCC statements are not supported in Snowflake.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
ユーザーによる追加のアクションは必要なく、ただ情報を提供するだけです。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0019¶
RAISERROR エラーメッセージは、SQL Serverの文字列形式により異なる場合があります。
説明¶
この EWI は、RAISERROR エラーメッセージが SQL Serverの文字列形式により異なる場合があることを通知するために追加されています。
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0020¶
デフォルトの制約がコメントアウトされ、テーブル定義に追加された可能性があります。
説明¶
この FDM は、Alter Tableステートメントにデフォルトの制約が存在する場合に追加されます。
Currently, support for that constraint is unavailable. A workaround to transform it is to define the table before using Alter Table. This allows SnowConvert AI to identify the references, and the default constraint is consolidated in the table definition. Otherwise, the constraint is only commented out.
コード例¶
入力コード:¶
生成されたコード:¶
既知の問題¶
同じ列に対して異なるデフォルトの制約が宣言されている場合、最初の制約のみがCreate Tableステートメントに反映されます。
デフォルトの制約が欠落列に宣言されている場合、依存関係がないため変換を実行できません。
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0021¶
MASKING POLICY がMASKED WITH の代用で作成されました。
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
この EWI は、Alter Tableステートメントに MASKED WITH 句が含まれている場合に追加されます。これが追加されている理由は、MASKED WITH 関数の代用として、近似の MASKING POLICY が作成されたことを通知するためです。
コード例¶
入力コード:¶
生成されたコード:¶
注釈
MASKING POLICY は、ALTER TABLE ステートメントの前に作成されます。そして、ほぼ同じ動作をすることが期待されます。ロールとユーザー権限に関して、いくつかの微調整が必要となる可能性があります。
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0022¶
ユーザーは事前にマスキングロールを定義しておく必要があります。
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
この EWI は、MASKING POLICY が作成され、データマスキングが適切に機能するように、ロールまたは権限をそこにリンクする必要がある場合に発生します。
コード例¶
入力コード¶
生成されたコード:¶
注釈
As shown on line 6, there is a placeholder where the defined roles can be placed. There is room for one or several values separated by commas. Also, here, the use of single quotes is mandatory for each of the values.
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0023¶
Error function could be different in Snowflake
説明¶
この EWI は、対応する動作の変化のために、以下の ERRORs 関数の変換に追加されます。
ERROR_MESSAGE Snowflakeでは SQLERRM のメッセージが異なる可能性があります。
ERROR_STATE ターゲット SQLSTATE プロパティは、プラットフォームの違いにより、異なる数値を返す可能性があります。
ERROR_PROCEDURE 変換は、関数が呼び出されたストアドプロシージャを返すように変更されました。
入力コード:¶
生成されたコード¶
推奨¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0024¶
At Time Zoneステートメントの CURRENT_TIMESTAMP は異なる動作をすることがあります。
説明¶
この FDM は、At Time Zone に CURRENT_TIMESTAMP がある場合に追加されます。これは、場合によっては結果が異なる可能性があるためです。
主な違いは、SQL Serverでは、CURRENT_TIMESTAMP がサーバーのタイムゾーンで現在のシステムの日付と時刻を返し、Snowflakeでは、CURRENT_TIMESTAMP が UTC(協定世界時)のタイムゾーンで現在の日付と時刻を返すことです。
入力コード:¶
SQL Server¶
結果¶
2024-02-08 16:52:55.317 -10:00
生成されたコード:¶
Snowflake¶
結果¶
2024-02-08 06:53:46.994 -1000
ベストプラクティス¶
これは、Snowflakeで同じ形式を維持したい場合の例です。
SQL Server¶
結果¶
2024-02-08 16:33:49.143 -10:00
Snowflakeでは、 ALTER SESSION を使ってデフォルトのタイムゾーンを変更することができます。例:
Snowflake¶
結果¶
2024-02-08 16:33:49.143
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0025¶
DB_ID_UDF は、特定のケースで異なる動作をする可能性があります。
説明¶
この FDM は、 DB_ID_UDF が DB_ID SqlServer 関数をできる限りエミュレートしようとしていることを明らかにするために追加されています。SqlServer では、データベースに割り当てられた識別子は一意であり、データベースが削除された場合、この ID は二度と使用されません。これとは別に、Snowflakeでは、この識別子はデータベースが作成されたときに割り当てられた番号に対応します。この番号も一意ですが、連続した番号であるため、このデータベースが削除された場合、この番号は削除されたデータベースの後に作成されたデータベースに割り当てられることになります。
入力コード:¶
SQL Server¶
結果¶
6
生成されたコード:¶
Snowflake¶
結果¶
6
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0026¶
DELETE のケースは仮テーブルでは考慮されません
説明¶
特定の変換を必要とする INSERT ステートメントパターンがあり、これには仮テーブルの作成が必要です。この FDM は、DELETE のケースは考慮されていないことを通知しています。このパターンの詳細については、 INSERT with Table DML Factor with MERGE as DML でご確認ください。
入力コード:¶
SQL Server¶
生成されたコード:¶
Snowflake¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0027¶
SET ANSI_NULLS ON ステートメントは、Snowflakeでは異なる動作をする可能性があります。
説明¶
この FDM は、Snowflakeでは SET ANSI_NULLS ON ステートメントが異なる動作をする可能性があることを通知しています。このステートメントについての詳細は、ANSI_NULLS の記事でご確認ください。
入力コード¶
生成されたコード¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0028¶
出力パラメーターは、実行されるコードに現れるのと同じ順序である必要があります。
説明¶
この FDM は、 SP_EXECUTESQL ステートメントの出力パラメーターが、実行する SQL の文字列と同じ順序である必要があることを通知しています。そうしないと、出力値が正しく割り当てられません。
コード例¶
正しい場合¶
ご覧のように @MaxAgeOUT と @MaxIdOUT は、SQL 文字列と出力パラメーターの両方に、同じ順序で現れます。
したがって、コードを変換する際、 SELECT $1, $2 INTO :MAXAGE, :MAXID FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) は正しく値を割り当てます。
Transact¶
Snowflake¶
問題のあるケース¶
ご覧のように、出力パラメーターの @MaxAgeOUT と @MaxIdOUT は、SQL 文字列とは異なる順序で現れます。
したがって、コードを変換する際、 SELECT $1, $2 INTO :MAXID, :MAXAGE FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) は誤って値を割り当てます。Max(AGE) は :MAXID に、 Max(ID) は :MAXAGE に割り当てられます。
これは、SELECT INTO ステートメント内の出力パラメーターの順序を変更するか、SQL 文字列内の順序を変更することによって、手動で修正する必要があります。
Transact¶
Snowflake¶
ベストプラクティス¶
確実に OUTPUT パラメーターが SQL の文字列と同じ順番になるようにします。
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0029¶
SET NOCOUNT ステートメントはコメントアウトされており、Snowflakeでは適用されません。
説明¶
SnowConvert AI は SET NOCOUNT ステートメントに遭遇すると、この FDM を追加します。これは Snowflake 環境には関係がないので、SnowConvert AI はその後に SET NOCOUNT ステートメントをコメントアウトします。
コード例¶
入力コード:¶
生成されたコード¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0030¶
SET ANSI_PADDING ON ステートメントはコメントアウトされますが、これはSnowflakeでは同等の動作です。
説明¶
Snowflakeは、文字列値を列に挿入する際、常に後続のスペースを保持します。この動作は、SQL ServerにおけるSET ANSI_PADDING ON に相当します。したがって、SnowConvert AI は SET ANSI_PADDING ON ステートメントに遭遇すると、この FDM を追加して、コメントアウトします。
コード例¶
入力コード:¶
生成されたコード¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0031¶
SET ANSI_WARNINGS ON statement is commented out because Snowflake generally adheres to ANSI-standard behaviors.
説明¶
Snowflakeは通常、特に算術オーバーフロー、ゼロによる除算、文字列の切り捨てのエラー処理に関して、デフォルトで ANSI_WARNINGS が ON であるかのように動作します。Snowflakeでは一般的に、 ANSI_WARNINGS と同等のものを明示的に「設定」する必要はありません。したがって、SnowConvert AI は SET ANSI_WARNINGS ON ステートメントに遭遇すると、この FDM を追加して、コメントアウトします。
コード例¶
入力コード:¶
生成されたコード¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0032¶
IDENTITY 列プロパティは、CREATE TABLE AS STATEMENT ではサポートされておらず、ROW_NUMBER() を使用してエミュレートされています。
説明¶
Snowflakeには、ID列で CREATE TABLE AS を実行する直接的な方法はありません。SnowConvert では、ROW_NUMBER 列を IDENTITY の代わりに追加して、IDの列挙をシミュレートしています。この変換はID列を作成しないので、作成後に挿入された行は自動的にインクリメントされません。
コード例¶
入力コード:¶
生成されたコード¶
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0033¶
SET QUOTED_IDENTIFIER STATEMENT MAY HAVE A DIFFERENT BEHAVIOR IN SNOWFLAKE.
説明¶
SQL Server Behavior
In SQL Server, SET QUOTED_IDENTIFIER ON is a syntax setting that is separate from collation. The database's or column's collation (for example, _CI for Case-Insensitive or _CS for Case-Sensitive) dictates whether quoted identifiers are case-sensitive or not. If a database has a _CI collation, then "MyColumn" and "mycolumn" are treated as the same.
Snowflake Behavior
In Snowflake, the behavior is simpler and more strict:
Unquoted Identifiers: Automatically stored and resolved in all uppercase, making them case-insensitive (mytable is the same as MYTABLE).
Quoted Identifiers: By default, identifiers enclosed in double quotes ("MyColumn") are case-sensitive. They are stored exactly as you typed them.
コード例¶
入力コード:¶
生成されたコード¶
How to Achieve Equivalence in Snowflake
To get the same case-insensitive behavior for quoted identifiers as in SQL Server, you can set the QUOTED_IDENTIFIERS_IGNORE_CASE session parameter to TRUE in Snowflake.
ベストプラクティス¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0034¶
説明¶
This FDM is generated when a DATA_COMPRESSION clause is encountered in a CREATE TABLE or ALTER TABLE statement. In SQL Server, DATA_COMPRESSION is used to specify whether data should be compressed (using ROW or PAGE compression) to reduce storage space and improve I/O performance. Snowflake automatically handles data compression using its proprietary compression algorithms, making the DATA_COMPRESSION clause unnecessary and unsupported. SnowConvert comments out the DATA_COMPRESSION clause during conversion.
Example Code¶
Input (SQL Server):¶
Output (Snowflake):¶
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0035¶
ENABLE/DISABLE trigger is automatically handled by Snowflake.
説明¶
This FDM is generated when SnowConvert AI encounters an ALTER TABLE ... ENABLE TRIGGER or ALTER TABLE ... DISABLE TRIGGER statement. In SQL Server, triggers can be manually enabled or disabled per table. In Snowflake, trigger execution is automatically managed by the platform — there is no need (or ability) to manually enable or disable individual triggers. SnowConvert AI comments out the trigger clause and adds this FDM marker.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
No manual action is typically required. Snowflake manages trigger behavior automatically.
If your workflow relied on temporarily disabling triggers for bulk loads, consider using Snowflake streams and tasks as an alternative pattern.
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0036¶
HOST_NAME replaced with CURRENT_IP_ADDRESS, which returns the client IP address instead of the workstation name.
説明¶
This FDM is generated when SnowConvert AI encounters the HOST_NAME() function. In SQL Server, HOST_NAME() returns the workstation name of the client connection. Snowflake does not have a direct equivalent; CURRENT_IP_ADDRESS() is used as the closest alternative, but it returns the client's IP address rather than the hostname. This is a functional difference because the returned values have different formats and semantics.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
If your application uses
HOST_NAME()for auditing or logging, verify that the IP address provides sufficient information for your use case.If the workstation name is required, consider passing it as a session parameter via
ALTER SESSION SETor storing it in a context variable.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0037¶
SET statement is not applicable in Snowflake as it has equivalent default behavior.
説明¶
This FDM is generated when SnowConvert AI encounters a SET statement whose specified value matches Snowflake's default behavior. For example, SET CONCAT_NULL_YIELDS_NULL ON is the default in Snowflake (NULL concatenation yields NULL), SET NUMERIC_ROUNDABORT OFF matches Snowflake's default of not raising errors on precision loss, and SET ARITHABORT ON/OFF has no behavioral impact in Snowflake. Since the setting is already the default, the statement is commented out.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
No action is required — the commented-out statement reflects behavior that is already the default in Snowflake.
If the non-default value of the same option is used elsewhere (e.g.,
SET CONCAT_NULL_YIELDS_NULL OFF), that will generate a separate EWI (SSC-EWI-TS0089) because the non-default behavior cannot be replicated.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0038¶
Agent Job migrated to Snowflake Task orchestration.
説明¶
This FDM is generated when SnowConvert AI encounters an sp_add_job call that creates a SQL Server Agent Job containing SSIS package steps. The Agent Job definition is migrated to a Snowflake Task orchestration model. The original sp_add_job call is commented out and replaced with generated orchestration files in the ETL/AGENTJOBS/ output directory. The generated output includes Snowflake Task definitions, orchestrator stored procedures, and schedule mappings.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Review the generated files in the
ETL/AGENTJOBS/output directory. These include Snowflake Task definitions and orchestrator stored procedures that replace the Agent Job.Validate the task scheduling and step ordering match your original Agent Job configuration.
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0039¶
Agent Job schedule mapped to CRON expression in Snowflake Task.
説明¶
This FDM is generated when SnowConvert AI encounters an sp_add_jobschedule or sp_add_schedule/sp_attach_schedule call that defines a schedule for a SQL Server Agent Job. The schedule parameters (freq_type, freq_interval, active_start_time) are mapped to a CRON expression for use in the corresponding Snowflake Task definition. The original schedule call is commented out.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Verify the generated CRON expression in the Snowflake Task definition matches your intended schedule. Complex SQL Server schedules (e.g., monthly on specific days, bi-weekly) may need manual adjustment.
Review the
ETL/AGENTJOBS/output for the generatedCREATE TASK ... SCHEDULE = 'USING CRON ...'statement.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0040¶
Agent Job step migrated to orchestrator Stored Procedure.
説明¶
This FDM is generated when SnowConvert AI encounters an sp_add_jobstep call for an Agent Job step with a TSQL or SSIS subsystem. The step is migrated to an orchestrator stored procedure that is generated in the ETL/AGENTJOBS/ output directory. The original sp_add_jobstep call is commented out. For SSIS steps, the SSIS package is also processed through SnowConvert AI's ETL-to-dbt pipeline.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Review the generated orchestrator stored procedure in
ETL/AGENTJOBS/to ensure the step logic is correctly translated.For SSIS steps, also review the generated dbt models and SQL files produced by the ETL-to-dbt pipeline.
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0041¶
sp_delete_job translated to DROP TASK IF EXISTS.
説明¶
This FDM is generated when SnowConvert AI encounters an sp_delete_job call for a SQL Server Agent Job that has been migrated to a Snowflake Task. The sp_delete_job call is translated to a DROP TASK IF EXISTS statement targeting the corresponding Snowflake Task. The task name is derived from the original job name with a TASK_ prefix and uppercase formatting.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Verify that the task name
TASK_{JOB_NAME}matches the task created by the Agent Job migration (SSC-FDM-TS0038).Note that dropping a task in Snowflake also removes its schedule. If the task has dependent tasks, those must be updated separately.
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0042¶
sp_start_job translated to EXECUTE TASK.
説明¶
This FDM is generated when SnowConvert AI encounters an sp_start_job call for a SQL Server Agent Job that has been migrated to a Snowflake Task. The call is translated to an EXECUTE TASK statement that triggers the corresponding Snowflake Task immediately, regardless of its schedule.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
EXECUTE TASKtriggers a single immediate run of the task. It does not affect the task's schedule or resume/suspend state.Ensure the task has been created and is in a
STARTEDstate if you also need it to run on schedule.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0043¶
sp_stop_job translated to ALTER TASK SUSPEND.
説明¶
This FDM is generated when SnowConvert AI encounters an sp_stop_job call for a SQL Server Agent Job that has been migrated to a Snowflake Task. The call is translated to ALTER TASK ... SUSPEND, which prevents future scheduled runs of the task. Note that ALTER TASK SUSPEND does not stop an already-running execution — it only prevents future runs from being triggered.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Be aware that
ALTER TASK SUSPENDonly prevents future scheduled executions. If the task is currently running, the in-progress execution will complete.In SQL Server,
sp_stop_jobattempts to cancel an in-progress job step. This capability does not exist in Snowflake's Task model.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0044¶
sp_update_job @enabled translated to ALTER TASK RESUME or SUSPEND.
説明¶
This FDM is generated when SnowConvert AI encounters an sp_update_job call with the @enabled parameter for a SQL Server Agent Job that has been migrated to a Snowflake Task. When @enabled=1, the call is translated to ALTER TASK ... RESUME (starts the task's schedule). When @enabled=0, it is translated to ALTER TASK ... SUSPEND (pauses the task's schedule).
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Verify that
RESUMEandSUSPENDmap correctly to your intended enable/disable behavior.If
sp_update_jobis called with parameters other than@enabled(e.g.,@description), those calls will generate SSC-EWI-TS0093 instead, as metadata updates are not applicable in Snowflake's Task model.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0046¶
Rowversion/timestamp data type auto-generates unique values in SQL Server but not in Snowflake.
説明¶
This FDM is generated when SnowConvert AI encounters a column with the ROWVERSION or TIMESTAMP data type (they are synonyms in SQL Server). In SQL Server, these data types automatically generate unique binary values on every INSERT and UPDATE, providing a mechanism for optimistic concurrency control. SnowConvert AI maps the type to BINARY(8), which preserves the storage format but does not replicate the auto-generation behavior.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
If your application uses
ROWVERSIONfor optimistic concurrency control, implement an alternative pattern in Snowflake. Options include:A
NUMBERcolumn with a Snowflake sequence, updated via a stream/task or stored procedure on each modification.A
TIMESTAMP_NTZcolumn set toCURRENT_TIMESTAMP()on insert/update using a default value and a stream-triggered task.
If the column is only used for auditing (not concurrency), a
TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()column may suffice.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0047¶
SET IDENTITY_INSERT commented out.
説明¶
This FDM is generated when SnowConvert AI encounters a SET IDENTITY_INSERT ... ON or SET IDENTITY_INSERT ... OFF statement. In SQL Server, SET IDENTITY_INSERT ON allows explicit values to be inserted into an identity column, and OFF re-enables the automatic identity generation. In Snowflake, explicit inserts into IDENTITY/AUTOINCREMENT columns are allowed by default without any special setting. However, the sequence counter does not automatically adjust to account for explicitly inserted values, which may cause conflicts.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
After explicitly inserting values into an identity column in Snowflake, manually adjust the underlying sequence to avoid conflicts:
ALTER SEQUENCE seq_name SET START = <max_inserted_value + increment>.If you rely on toggling
IDENTITY_INSERTin batch load scripts, remove theSETstatements and add a sequence adjustment step at the end of the batch.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0047¶
SET IDENTITY_INSERT commented out.
説明¶
In SQL Server, SET IDENTITY_INSERT controls whether explicit values can be inserted into the identity column of a table. When set to ON, it allows explicit inserts; when set to OFF (the default), it prevents them.
In Snowflake, there is no equivalent statement because explicit inserts into IDENTITY / AUTOINCREMENT columns are always allowed by default. However, unlike SQL Server, the underlying sequence counter in Snowflake does not adjust to account for explicitly inserted values, which may lead to duplicate key conflicts on subsequent inserts.
SnowConvert AI comments out the SET IDENTITY_INSERT statement and attaches this FDM with a context-specific reason depending on whether the original statement was ON or OFF.
コード例¶
SET IDENTITY_INSERT ON¶
入力コード:¶
生成されたコード:¶
SET IDENTITY_INSERT OFF¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
After migration, verify that any tables with
IDENTITY/AUTOINCREMENTcolumns do not experience duplicate key conflicts caused by the sequence counter not reflecting explicitly inserted values.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0046¶
Rowversion/timestamp data type auto-generation behavior not replicated in Snowflake.
説明¶
In SQL Server, the rowversion data type (also known as timestamp) automatically generates a unique BINARY(8) value every time a row is inserted or updated. This is commonly used for optimistic concurrency control.
Snowflake does not have an equivalent mechanism. The rowversion/timestamp data type is mapped to BINARY(8), but Snowflake's BINARY(8) column will not auto-generate unique values on INSERT or UPDATE. Any application logic that depends on auto-incrementing row version values will need to be revised.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Review any application logic that depends on
rowversion/timestampfor optimistic concurrency control and adjust accordingly.さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0053¶
WITH CHECK clause removed. Snowflake constraints are informational only and not enforced.
説明¶
This message is shown when an ALTER TABLE ... WITH CHECK ADD CONSTRAINT ... FOREIGN KEY ... statement is converted. SnowConvert AI removes the WITH CHECK clause because Snowflake constraints are informational and are not enforced, so the validation semantics do not apply.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Review whether the source workflow depended on SQL Server validating existing data when the constraint was added.
If validation is required after migration, implement an explicit data-quality check in Snowflake.
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。
SSC-FDM-TS0054¶
CHECK/NOCHECK CONSTRAINT statement removed. Enabling or disabling constraints is not applicable in Snowflake.
説明¶
This message is shown when ALTER TABLE ... CHECK CONSTRAINT ... or ALTER TABLE ... NOCHECK CONSTRAINT ... is converted. SnowConvert AI comments out the statement because Snowflake does not support enabling or disabling constraints in the same way SQL Server does.
コード例¶
入力コード:¶
生成されたコード:¶
ベストプラクティス¶
Review any operational process that temporarily disables constraints during bulk loads or maintenance.
If the source process relied on constraint state transitions, redesign that workflow explicitly for Snowflake.
さらにサポートが必要な場合は、 snowconvert-support@snowflake.com までメールでお問い合わせください。