SnowConvert AI - SQL Server-Azure Synapse 기능적 차이¶
Applies to
SQL 서버
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에서 지원되지 않으므로 제거됩니다.
이 절은 프로시저가 복제를 위해 생성되었다고 명시합니다. 따라서 Subscriber에서는 실행할 수 없습니다.
참고
이 절 기능에 대한 자세한 내용은 설명서를 참조하세요.
코드 예제¶
입력 코드:¶
생성된 코드:¶
모범 사례¶
추가 사용자 작업이 필요하지 않습니다.
추가 지원이 필요한 경우 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¶
Encrypted with는 Snowflake에서 지원되지 않습니다.
설명¶
이 경고는 열 정의에 ENCRYPTED WITH가 사용되는 경우에 추가됩니다. 이는 Snowflake에서 지원되지 않으므로 제거되며 경고가 추가됩니다.
코드 예제¶
입력 코드:¶
생성된 코드:¶
모범 사례¶
추가 사용자 작업이 필요하지 않습니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-TS0010¶
CURRENT_DATABASE 함수는 특정 상황에서 다르게 동작합니다.
설명¶
Snowflake는 database_id 매개변수를 지원하지 않으며 CURRENT_DATABASE 함수는 항상 현재 데이터베이스 이름을 반환하므로, 이 EWI는 DB_NAME 함수가 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 Scripting 커서 행은 수정할 수 없습니다.
설명¶
이 EWI는 입력 코드에서 커서가 수정 가능 상태일 때 추가됩니다. Snowflake Scripting에서는 커서 행을 수정할 수 없습니다.
코드 예시:¶
입력 코드:¶
생성된 코드:¶
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-TS0014¶
계산된 열이 변환되었습니다
설명¶
이 경고는 SQL Server의 계산된 열이 Snowflake에서 상응하는 열로 변환되는 경우에 추가됩니다. 경우에 따라 기능적 동등성에 영향을 미칠 수 있기 때문에 이 경고가 추가됩니다.
코드 예제¶
입력 코드:¶
생성된 코드:¶
모범 사례¶
추가 사용자 작업이 필요하지 않습니다. 이는 단지 정보 제공용입니다.
변환되지 않은 식에 수동 변경 사항을 추가합니다.
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-TS0016¶
Snowflake의 XML 열은 형식이 다를 수 있습니다
설명¶
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 함수에서 지원되지 않기 때문에 추가됩니다.
입력 코드:¶
생성된 코드:¶
모범 사례¶
추가 사용자 작업이 필요하지 않습니다.
추가 지원이 필요한 경우 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.
코드 예제¶
입력 코드:¶
생성된 코드:¶
Known Issues¶
동일한 열에 대해 서로 다른 기본 제약 조건이 선언되면 첫 번째 제약 조건만 Create Table 문에 반영됩니다.
누락된 열에 기본 제약 조건이 선언되면 종속성 부족으로 인해 변환을 수행할 수 없습니다.
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-TS0021¶
MASKED WITH를 대체하기 위해 MASKING POLICY가 생성되었습니다.
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
이 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 서버¶
결과¶
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 케이스가 고려되지 않음을 알립니다. 이 패턴에 대한 자세한 내용은 MERGE를 DML로 사용하는 테이블 DML 요소를 포함한 INSERT를 참조하세요.
입력 코드:¶
Sql Server¶
생성된 코드:¶
Snowflake¶
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-TS0027¶
SET ANSI_NULLS ON 문은 Snowflake에서 다르게 동작할 수 있습니다
설명¶
이 FDM은 SET ANSI_NULLS ON 문이 Snowflake에서 다르게 동작할 수 있음을 알립니다. 이 문에 대한 자세한 내용은 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는 SETNOCOUNT 문을 발견하는 경우 이 FDM을 추가합니다. 그런 다음 SnowConvert AI는 SET NOCOUNT 문이 Snowflake 환경과 관련이 없기 때문에 주석 처리합니다.
코드 예제¶
입력 코드:¶
생성된 코드¶
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-TS0030¶
SET ANSI_PADDING ON 문이 주석 처리되었으며, Snowflake에서 동일하게 적용됩니다.
설명¶
Snowflake는 열에 삽입될 때 문자열 값의 후행 공백을 항상 유지합니다. 이 동작은 SQL Server의 SET ANSI_PADDING ON과 동일합니다. 따라서 SnowConvert AI는 SET ANSI_PADDINGON 문을 발견하는 경우 이 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 상태인 것처럼 동작하며, 특히 산술 오버플로, 0으로 나누기, 문자열 잘림 등의 오류를 처리할 때 그렇습니다. 일반적으로 Snowflake에서 ANSI_WARNINGS에 상응하는 항목을 명시적으로 “설정”할 필요가 없습니다. 따라서 SnowConvert AI는 SET ANSI_WARNINGSON 문을 발견하는 경우 이 FDM을 추가하고 주석 처리합니다.
코드 예제¶
입력 코드:¶
생성된 코드¶
모범 사례¶
추가 지원이 필요한 경우 snowconvert-support@snowflake.com으로 이메일을 보내주세요.
SSC-FDM-TS0032¶
IDENTITY 열 속성은 CREATE TABLE AS STATEMENT에서 지원되지 않으며, ROW_NUMBER()를 사용하여 에뮬레이트됩니다.
설명¶
Snowflake에는 ID 열을 사용하여 CREATE TABLE AS를 직접 수행할 수 있는 방법이 없습니다 그러나 SnowConvert는 IDENTITY 대신 ROW_NUMBER 열을 추가하여 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으로 이메일을 보내주세요.