SnowConvert AI - Problemas do SQL Server-Azure Synapse¶
Applies to
SQL Server
Azure Synapse Analytics
Sybase
SSC-EWI-TS0001¶
Corpo de função definida pelo usuário não gerado
Gravidade¶
Crítico
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI aparece quando o SnowConvert AI trata de uma exceção crítica que faz com que o corpo da função não seja gerado durante sua tradução.
Exemplo de código¶
SQL Server¶
Snowflake¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0002¶
O ANSI_PADDING OFF não é compatível com o Snowflake.
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
In SQL Server, SET ANSI_PADDING controls how trailing blanks are stored in CHAR, VARCHAR, BINARY, and VARBINARY columns. When SET ANSI_PADDING OFF is active during a CREATE TABLE or ALTER TABLE statement, SQL Server records this setting as a column-level property on each column defined in that scope. This means the trimming behavior is permanently associated with the column definition, regardless of the session setting at the time data is inserted.
Specifically, when a column is created with ANSI_PADDING OFF:
VARCHARcolumns have trailing blanks trimmed on insert.VARBINARYcolumns have trailing zeros trimmed on insert.CHARcolumns are trimmed of trailing blanks (instead of being right-padded to the defined length).
Snowflake has no equivalent column-level property. Snowflake always preserves trailing spaces in string values (equivalent to ANSI_PADDING ON). There is no way to configure a Snowflake column to automatically trim trailing blanks on insert.
Since this is a storage-level semantic difference that cannot be automatically translated, SnowConvert AI flags the statement with this EWI.
Exemplo de código¶
SQL Server¶
Snowflake¶
Limitations¶
Snowflake does not support ANSI_PADDING OFF semantics at any level (session, database, or column).
Wrapping inserts with
RTRIM: This only handles explicitINSERTstatements in the migrated code. It does not cover data loaded through ETL pipelines, external tools, or application code that also relied on the column’sANSI_PADDING OFFproperty.Session-level setting: Snowflake has no session parameter equivalent to
SET ANSI_PADDING.Column-level constraint or default: Snowflake does not allow defining a column property that automatically trims trailing spaces.
To fully replicate ANSI_PADDING OFF behavior in Snowflake, manual intervention is required at the data pipeline level for every affected column.
Práticas recomendadas¶
Identify all columns that were created under
SET ANSI_PADDING OFFin the source SQL Server database. You can querysys.columnswithis_ansi_padded = 0to find them.For each affected column, ensure that all data insertion paths (SQL scripts, ETL pipelines, application code) apply
RTRIMbefore inserting into the corresponding Snowflake column.Consider creating a Snowflake stored procedure or UDF wrapper that enforces trimming for the affected columns.
Review whether the trimming behavior is actually relied upon by downstream consumers. In some cases,
ANSI_PADDING OFFwas set by default in legacy scripts without the application depending on the trimming behavior.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0003¶
O ANSI_WARNINGS OFF não é compatível com o Snowflake.
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
No Transact-SQL, a instrução SET ANSI_WARNINGS OFF desabilita avisos como divisão por zero ou estouro aritmético. Visto que SET ANSI_WARNINGS OFF não é uma configuração diretamente configurável no Snowflake, o SnowConvert AI vai gerar este EWI.
Exemplo de código¶
SQL Server¶
Snowflake¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0009¶
A seguinte transação pode conter transações aninhadas, o que é considerado um padrão complexo incompatível com o Snowflake.
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Gravidade¶
High
Descrição¶
Este erro é adicionado para indicar quando uma transação pode conter transações aninhadas. No SQL Server, as transações podem ser aninhadas. Isto significa que é possível iniciar uma nova transação dentro de uma transação existente. Se após a primeira instrução BEGIN executarmos outra, uma nova transação será aberta e a contagem da transação atual será aumentada em um.\
Por outro lado, isto não é compatível com o Snowflake; o que acontecerá é que a segunda instrução BEGIN será ignorada e ainda haverá apenas uma transação. Para obter mais informações, consulte Transações do SQL Server.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
No Snowflake, as transações aninhadas não causarão erros de compilação; elas serão simplesmente ignoradas. Você pode acessar os relatórios de avaliação para verificar se as transações aninhadas estão presentes.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0010¶
A expressão de tabela comum na exibição não é compatível com o Snowflake.
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Gravidade¶
High
Descrição¶
Este erro é adicionado quando um CTE inválido está dentro de uma exibição, já que exibições são representações materializadas de consultas, o que significa que elas definem apenas como os dados são recuperados e apresentados, não como são manipulados.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
EWI relacionado¶
SSC-EWI-0021: Sem suporte.
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0013¶
Coluna computada transformada
Nota
Este EWI está obsoleto, consulte a documentação SSC-FDM-TS0013
Gravidade¶
Low
Descrição¶
Este aviso é adicionado quando uma coluna computada do SQL Server é transformada em seu equivalente do Snowflake. É adicionado porque, em alguns casos, a equivalência funcional pode ser afetada.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Nenhuma ação adicional do usuário é necessária; ele é apenas informativo.
Adicione alterações manuais à expressão não transformada.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0015¶
O tipo de dados não é compatível com o Snowflake
Gravidade¶
Medium
Descrição¶
Este aviso é adicionado quando um SQL A coluna do servidor tem um tipo incompatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Verifique a documentação de tipos de dados do Snowflake para encontrar um equivalente para o tipo de dados.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0016¶
Tradutor da função escalar ODBC pendente
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado quando o SnowConvert AI encontra uma função escalar ODBC dentro do código de entrada.\ As funções definidas pelo usuário são incompatíveis com a função escalar ODBC.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
EWI relacionado¶
SSC-EWI-0073: Revisão de equivalência funcional pendente.
Práticas recomendadas¶
Nenhuma ação adicional do usuário é necessária; ele é apenas informativo.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0017¶
O mascaramento é incompatível
Gravidade¶
Low
Descrição¶
Este EWI é adicionado quando o SnowConvert AI encontra uma coluna mascarada dentro de uma instrução CREATE TABLE. Esta funcionalidade não funciona adicionando a opção à declaração da coluna. É necessário um esforço manual para ter o mesmo comportamento que o SQL Server.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
O SnowConvert AI não está gerando MASKING POLICIES na versão atual, portanto, elas têm que ser criadas manualmente. Por exemplo,
a primeira etapa é criar uma função de administrador de política de mascaramento.
A segunda é conceder os privilégios necessários à função criada.
A próxima etapa é criar as funções de política de mascaramento.
Nota
Para fins de amostra, usamos alguns exemplos de funções de mascaramento em SQL Server e as traduzimos manualmente para seu equivalente em Snowflake.
A etapa final é adicionar a política de mascaramento à coluna que originalmente tinha a opção de mascaramento em SQL Server.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0023¶
Opção em massa incompatível
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado quando não foi possível mapear alguma opção em um BULKINSERT. As opções em massa traduzidas devem ser refletidas como opções FILE FORMAT.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Acesse o SnowSQL CLI guia do usuário.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
EWI relacionado¶
SSC-FDM-TS0004: PUT instrução incompatível na UI.
SSC-EWI-TS0024¶
Transformação incompleta para inserção em massa
Gravidade¶
Low
Descrição¶
Este EWI é adicionado quando um BULK INSERT dentro de um procedimento armazenado não foi identificado, de modo que as dependências para a transformação completa não sejam geradas. Também o COPY INTO transformado recupera o arquivo de um tempStage que precisa ser criado manualmente.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
To retrieve the file, manually create a STAGE and a FILE FORMAT.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0025¶
Função ERROR_SEVERITY transformada
Gravidade¶
Low
Nota
Generate Procedures and Macros using JavaScript as the target language adding the following flag -t JavaScript or –PLTargetLanguage JavaScript
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado quando a função interna ERROR_SEVERITY está traduzida. Por padrão, a função retornará 16, pois é a gravidade mais comum no SQL Server. O UDF gerado deve recuperar
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0026¶
com Delete Query transformada em Create Table.
Gravidade¶
Low
Descrição¶
Este EWI é adicionado quando uma expressão de tabela comum com uma Delete From é transformada em Create ou Replace Table.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Não são necessárias ações adicionais do usuário.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0032¶
Inserção em massa parcialmente traduzida
Aviso
O EWI só é gerado quando o Javascript é a linguagem de destino para procedimentos armazenados. Este recurso de tradução está obsoleto, pois o Script Snowflake é a linguagem de destino recomendada para procedimentos armazenados.
Gravidade¶
High
Nota
Generate Procedures and Macros using JavaScript as the target language adding the following flag -t JavaScript or –PLTargetLanguage JavaScript
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado a um literal que era originalmente uma concatenação, quando o código contido tinha uma instrução BULK INSERT. O comando PUT resultante da tradução de BULK INSERT é incompatível na execução do código que era originalmente SQL Dynamic.
Por esta razão, o comando PUT deve ser extraído do código de saída e executado manualmente fora do procedimento que o contém. Tenha em mente que se houver muitas instruções BULK INSERT em sentenças de Dynamic SQL dentro do procedimento, é aconselhável dividir este procedimento para poder executar manualmente o comando PUT correspondente para cada BULK INSERT traduzido.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Extraia o comando
PUTresultante da instrução DynamicBULK INSERTe execute-a antes de chamar o procedimento.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0034¶
Cláusula RETURNS incompleta devido à falta de símbolos
Gravidade¶
High
Descrição¶
Este EWI é adicionado ao código de saída quando a cláusula RETURNS TABLE de um CREATE FUNCTION não poderia ser gerada corretamente. Isso acontece quando as colunas que devem ser especificadas na cláusula RETURNS TABLE resultante não pode ser inferida por SnowConvert AI, deixando a cláusula RETURNS TABLE vazia.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
As causas para esse problema podem variar. Certifique-se de incluir todos os objetos de que seu código precisa. Se o problema persistir, mesmo que a migração tenha acesso a todos os objetos necessários, entre em contato conosco com informações sobre seu cenário específico.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0035¶
Declarar uma variável de cursor que nunca é inicializada é incompatível.
Gravidade¶
Medium
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Currently, a Cursor Variable that is declared but never initialized is not supported by Snowflake. Thus, the EWI is added, and the code commented out.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0036¶
O Script Snowflake só é compatível com cursores locais.
Gravidade¶
Medium
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado quando são identificados outros cursores que não sejam cursores locais. Atualmente, o Script Snowflake só é compatível com cursores locais. Assim, todos os cursores são traduzidos como cursores locais.
Exemplo de código¶
Código de entrada:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0037¶
Os cursores do Script Snowflake não são roláveis.
Gravidade¶
Medium
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Os cursores do Script Snowflake não são roláveis. Atualmente, somente FETCH NEXT é compatível.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0039¶
Várias instruções SET encontradas para o mesmo cursor.
Gravidade¶
Medium
Descrição¶
Este EWI é adicionado quando várias instruções SET são encontradas para o mesmo cursor. Todas as instruções SET adicionais também são transformadas em comentário. Isso acontece porque ter várias instruções SET para o mesmo cursor não é válida no Script Snowflake.
Exemplo de código:¶
Este EWI é adicionado quando várias instruções SET são encontradas para o mesmo cursor. Todas as instruções SET adicionais também são transformadas em comentário. Isso acontece porque ter várias instruções SET para o mesmo cursor não é válida no Script Snowflake.¶
Exemplo de código:¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0041¶
Os métodos de tipo de dados XML são incompatíveis com o Snowflake.
Gravidade¶
Medium
Descrição¶
Este EWI é adicionado aos seguintes métodos de tipo de dados XML que são incompatíveis com o Snowflake SQL:
Valor
Consulta
Existir
Modificar
Nós
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Considere o uso de UDFs para emular o comportamento do código-fonte
Você pode verificar esta documentação e revisar algumas abordagens possíveis para trabalhar com tipos de dados XML no Snowflake.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0043¶
WITH XMLNAMESPACES não é compatível com o Snowflake.
Gravidade¶
Medium
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado à cláusula WITH XMLNAMESPACES , que não é compatível com o Snowflake SQL
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Considere o uso de UDFs para emular o comportamento do código-fonte. O código a seguir fornece sugestões de UDFs que podem ser usados para conseguir recriar o comportamento original:
SQL Server¶
Snowflake SQL¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
EWI relacionado¶
SSC-PRF-TS0001: Aviso de desempenho - recursão de CTE não verificada. Pode exigir uma palavra-chave recursiva.
A cláusula SSC-EWI-TS0044: FOR XML não é compatível com o Snowflake.
SSC-EWI-TS0015: Tipo de dados incompatíveis com o Snowflake
SSC-EWI-TS0044¶
A cláusula FOR XML não é compatível com o Snowflake.
Gravidade¶
Crítico
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado à cláusula FOR XML , que não é compatível com o Snowflake SQL
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Considere o uso de UDFs para emular o comportamento do código-fonte. O código a seguir fornece sugestões de UDFs que podem ser usados para conseguir recriar o comportamento original:
SQL Server
Consulta¶
Resultado¶
Snowflake¶
Consulta¶
Resultado¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0045¶
A instrução rotulada não é compatível com o Script Snowflake.
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
This EWI is added when SnowConvert AI encounters a labeled statement in T-SQL that cannot be automatically transformed.
When GOTO/Label patterns appear inside a stored procedure with only forward jumps and top-level labels, SnowConvert AI automatically transforms them into nested procedure definitions with CALL/RETURN semantics — no EWI is emitted in those cases. See the LABEL and GOTO translation reference for details on the transformation.
This EWI is only emitted when the label cannot be transformed. This happens when the procedure contains a backward GOTO (one that targets a label appearing earlier in the source, which would require recursive calls), when labels appear inside anonymous blocks or UDFs (which do not support nested procedure definitions), or when labels are declared inside nested control flow blocks like IF, WHILE, or TRY (which cannot be extracted into nested procedures).
Exemplo de código¶
The following example shows a backward GOTO pattern (retry logic) where the label RetryConnection appears before the GOTO that targets it, preventing automatic transformation:
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
For backward GOTO patterns like retry logic, refactor the control flow to use
WHILEorLOOPconstructs instead.For labels in anonymous blocks or UDFs, restructure the code into separate procedures or use
IF/ELSEcontrol flow.Forward GOTO/Label patterns inside stored procedures are automatically transformed — no manual action is required for those cases.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0046¶
A tabela do sistema não é compatível com o Snowflake.
Gravidade¶
Medium
Descrição¶
This EWI is added when referencing SQL Server system tables not supported or without equivalent in Snowflake SQL. See the supported and unsupported system tables reference for the complete list.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0047¶
A mensagem de erro RAISERROR pode ser diferente devido ao formato da cadeia de caracteres do SQL Server.
Nota
Este EWI está obsoleto, consulte a documentação SSC-FDM-TS0019
Gravidade¶
Low
Descrição¶
Este EWI é adicionado para notificar que a mensagem de erro RAISERROR pode ser diferente devido ao formato da cadeia de caracteres do SQL Server.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0049¶
A tradução de várias linhas do corpo If planejada para ser entregue no futuro.
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Gravidade¶
Medium
Descrição¶
A maioria dos casos em instruções IF contendo um Begin ... Bloco End dentro de seu corpo é compatível. Este é um cenário bem-sucedido (nenhum SSC-EWI-TS0049 gerado).
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Nota
Em um exemplo de código geral (como o na parte superior), a conversão é feita com sucesso. Mas há alguns casos extremos em que a instrução «IF» não é convertida e o EWI será gerado.
Suporte manual¶
Caso 1: Instrução única¶
Para esses casos, a transformação seria simples, pois a instrução transformada apareceria em uma cláusula de seleção
Caso 2: Instruções múltiplas¶
Para casos em que várias instruções estão sendo transformadas, deve-se transformar a instrução N, e usá-la como a tabela de origem para a instrução N+1.
Caso 3: Instruções de múltiplos conjuntos¶
Para estes casos, será necessário replicar uma transformação para cada instrução definida.
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0055¶
A restrição padrão foi transformada em comentário e pode ter sido adicionada a uma definição de tabela.
Nota
Este EWI está obsoleto, consulte a documentação SSC-FDM-TS0020.
Gravidade¶
Medium
Descrição¶
Este EWI é adicionado quando a restrição padrão está presente em uma instrução Alter table.
Atualmente, essa restrição é incompatível. Uma solução alternativa disponível para transformá-la é quando a tabela é previamente definida como Alter Table, desta forma identificamos as referências, e a restrição padrão é unificada na definição da tabela; caso contrário, a restrição é apenas transformada em comentário.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Nota
Se todo o conteúdo de Alter Table for inválido, ela será transformada em comentário.
Problemas conhecidos¶
Quando diferentes restrições padrão são declaradas na mesma coluna, apenas a primeira é refletida na instrução Create Table.
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0056¶
Um MASKING POLICY foi criado como um substituto para MASKED WITH.
Nota
Este EWI está obsoleto, consulte a documentação SSC-FDM-TS0021.
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado quando a instrução Alter Table contém uma cláusula MASKED WITH. O motivo pelo qual isto é adicionado é informar que um valor MASKING POLICY aproximado foi criado como um substituto para a função MASKED WITH.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Nota
MASKING POLICY será criada antes da instrução ALTER TABLE. E espera-se que tenha um comportamento aproximado. Alguns ajustes podem ser necessários em relação a funções e privilégios de usuário. <!– TODO: You can relate to Broken link broken-reference «mention» for further details.>
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0057¶
O usuário deve previamente definir a função de mascaramento.
Nota
Este EWI está obsoleto, consulte a documentação SSC-FDM-TS0022
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI ocorre quando uma MASKING POLICY é criada e uma função ou privilégio deve ser vinculado a ela para que o mascaramento de dados possa funcionar corretamente.
Exemplo de código¶
Código de entrada¶
Código gerado:¶
Nota
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.
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0060¶
Intervalo de data e hora incompatível no Snowflake.
Gravidade¶
Medium
Descrição¶
Este EWI é adicionado quando uma das seguintes partes de tempo é usado como parâmetro para uma função relacionada à data, pois não são compatíveis com o Snowflake. Para mais informações, vá para «Partes de data e hora com suporte» (Funções de data e hora | Documentação do Snowflake).
Exemplo de código¶
Código de entrada¶
Código gerado:¶
Práticas recomendadas¶
Um UDF poderia ser criado para extrair manualmente partes de tempo incompatíveis com o Snowflake.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0061¶
ALTER COLUMN incompatível
Gravidade¶
Medium
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado sempre que há uma instrução ALTER COLUMN incompatível
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0063¶
Fuso horário incompatível com o Snowflake.
Gravidade¶
Crítico
Descrição¶
Este EWI é adicionado quando há fusos horários incompatíveis com o Snowflake
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Uma função definida pelo usuário pode ser criada para dar compatibilidade a vários fusos horários.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0067¶
Parâmetros inválidos na função com valor de tabela OPENXML.
Gravidade¶
Crítico
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado quando há parâmetros inválidos na OPENXML, especificamente quando não é possível acessar o caminho XML.
Para evitar este EWI, envie o caminho explícito do nó por meio dos parâmetros.
Código de entrada:¶
Código gerado:¶
Código de entrada (parâmetro explícito)¶
Código gerado (parâmetro explícito)¶
Práticas recomendadas¶
Tente ver se o caminho pode ser explicitamente passado como um parâmetro.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0070¶
CURRENT_TIMESTAMP na instrução At Time Zone pode ter um comportamento diferente em certos casos.
Nota
Este EWI está obsoleto, consulte a documentação SSC-FDM-TS0024.
Descrição¶
Este EWI é adicionado quando At Time Zone tem o CURRENT_TIMESTAMP. Isso ocorre porque o resultado pode ter resultados diferentes em alguns casos.
A principal diferença é que no SQL Server, CURRENT_TIMESTAMP retorna a data e hora atual do sistema no fuso horário do servidor e, no Snowflake, CURRENT_TIMESTAMP retorna a data e hora atual no fuso horário UTC (Horário Universal Coordenado).
Código de entrada:¶
SQL Server¶
Resultado¶
2024-02-08 16:52:55.317 -10:00
Código gerado:¶
Snowflake¶
Resultado¶
2024-02-08 06:53:46.994 -1000
Práticas recomendadas¶
Este é um exemplo se você quiser manter o mesmo formato no Snowflake.
SQL Server¶
Resultado¶
2024-02-08 16:33:49.143 -10:00
No Snowflake, você pode usar ALTER SESSION para alterar o fuso horário padrão. Por exemplo:
Snowflake¶
Resultado¶
2024-02-08 16:33:49.143
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0072¶
A instrução RETURN será ignorada devido à instrução RETURN anterior
Gravidade¶
Baixo
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado quando as instruções SELECT e os parâmetros OUPUT devem ser retornados. Nesse caso, os conjuntos de resultados das instruções SELECT são priorizadas.
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Remova a instrução RETURN que deve ser ignorada.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
EWI relacionado¶
SSC-FDM-0020: Vários conjuntos de resultados são retornados em tabelas temporárias;
SSC-EWI-TS0073¶
A mensagem de erro poderia ser diferente no Snowflake
Nota
Este EWI está obsoleto, consulte a documentação SSC-FDM-TS0023
Gravidade¶
Low
Descrição¶
Este EWI é adicionado na transformação de ERROR_MESSAGE(). A mensagem exata do erro poderia mudar no Snowflake.
Código de entrada:¶
Código gerado¶
Recomendação¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com.
SSC-EWI-TS0074¶
O resultado da conversão pode ser diferente da função TRY_CAST/TRY_CONVERT devido à falta de dependências
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
Este EWI é adicionado na transformação das funções TRY_CAST e TRY_CONVERT. O resultado exato dessas funções pode mudar no Snowflake devido à falta de dependências (o SnowConvert AI não conseguiu resolver alguns tipos de dados). Isto poderia ocorrer porque a dependência não estava no código-fonte.
Código de entrada:¶
Código gerado¶
Recomendação¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com.
SSC-EWI-TS0075¶
Procedimento interna incompatível
Gravidade¶
Medium
Descrição¶
A tradução de procedimentos internos é incompatível atualmente.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0076¶
Os parâmetros padrão podem precisar ser reordenados
Nota
This EWI is deprecated. SnowConvert AI now automatically reorders default parameters to the end of the parameter list. Please refer to SSC-FDM-0041 for the updated behavior.
Gravidade¶
Medium
Descrição¶
Os parâmetros padrão podem precisar ser reordenados. O Snowflake só é compatível com parâmetros padrão no final das declarações de parâmetros.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Nenhuma ação do usuário final é necessária.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0077¶
Agrupamento incompatível
Gravidade¶
Low
Descrição¶
Esta mensagem é exibida quando há uma cláusula de agrupamento que não é compatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Não são necessárias ações adicionais do usuário.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0078¶
Valor padrão não permitido no Snowflake.
Gravidade¶
Medium
Descrição¶
Esse erro é adicionado ao código quando expressões como chamadas de função, nomes de variáveis ou constantes nomeadas seguem a opção padrão.
O Snowflake só é compatível com constantes explícitas, como números ou cadeias de caracteres.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
¶
Práticas recomendadas¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0079¶
Comando incompatível do console do banco de dados
Gravidade¶
Medium
Descrição¶
Este EWI é adicionado quando o SnowConvert AI encontra uma instrução DBCC dentro do código de entrada.\ A maioria das instruções DBCC é incompatível com o Snowflake.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Nenhuma ação adicional do usuário é necessária; ele é apenas informativo.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0080¶
A alteração do contexto de execução em tempo de execução é incompatível com o Snowflake
Gravidade¶
High
Descrição¶
Usuários do SQL Server pode usar o comando EXECUTE AS para mudar temporariamente o contexto de execução, isso modifica os privilégios de execução e afeta os resultados de funções dependentes de contexto, como USER_NAME(). O comando REVERT pode ser usado para restaurar o contexto anterior à última EXECUTE AS.
O Snowflake só é compatível com a definição de um contexto de execução em procedimentos, usando as instruções CREATE PROCEDURE ou ALTER PROCEDURE. A alteração do contexto em tempo de execução é incompatível.
Exemplo de código¶
Código de entrada:
Código de saída:
Práticas recomendadas¶
Refatore o código para que funcione sem precisar mudar o contexto.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0081¶
O uso de uma junção completa em uma instrução de exclusão é incompatível
Descrição¶
Ao transformar a instrução DELETE, o SnowConvert AI extrai as referências de tabela encontradas na cláusula FROM da instrução e as move para a cláusula USING da instrução de exclusão do Snowflake.
The following EWI warns the user about the limitations of the outer join (+) syntax in Snowflake. To preserve the LEFT and RIGHT JOINs used in the original code, outer join syntax (+) is added to the conditions to indicate such behavior. However, in Snowflake, the (+) syntax can’t be used to indicate FULL JOINs. For more information, see Joins in the WHERE clause.
Código de exemplo¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Verifique a lógica de seu FULL JOIN, pode ser possível reescrevê-lo como outro tipo de JOIN. Por exemplo, o código incluído no código de exemplo é essencialmente o mesmo que um LEFT JOIN:
Entrada:
Saída:
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0082¶
CROSS APPLY foi convertido em LEFT OUTER JOIN e requer validação manual.
Descrição¶
A validação manual é necessária porque a conversão de CROSS APPLY em LEFT OUTER JOIN pode levar a resultados incorretos ou comportamentos inesperados no Snowflake. Embora as duas funções possam parecer semelhantes, elas tratam certas situações de forma diferente, especialmente quando a subconsulta não tem correspondências ou a subconsulta está correlacionada com a tabela externa.
Código de exemplo¶
Dados de configuração¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Principais cenários em que LEFT OUTER JOIN Pode falhar¶
Comportamento de filtragem: se o
CROSS APPLYoriginal destinava-se a filtrar as linhas da tabela principal que não tinham correspondências na subconsulta, umLEFT OUTER JOINnão replicará este comportamento. Em vez disso, incluirá essas linhas com valoresNULLpara as colunas unidas, o que pode não ser o resultado pretendido.Subconsultas correlacionadas:
CROSS APPLYfoi projetado especificamente para dar compatibilidade a subconsultas correlacionadas, em que a subconsulta faz referência a colunas da consulta externa. UmaLEFT OUTER JOINpadrão não é compatível com esse padrão da mesma maneira. A tentativa de converter umCROSS APPLYcorrelacionado em umaLEFT OUTER JOINpode levar a erros de sintaxe, produtos cartesianos (linhas duplicadas) ou resultados logicamente incorretos.Diferenças do conjunto de resultados: a semântica de
CROSS APPLYeLEFT OUTER JOINdiferem, especialmente quando a subconsulta não retorna nenhuma linha.CROSS APPLYexcluirá tais linhas do resultado, enquantoLEFT OUTER JOINirá incluí-las com valoresNULL.
Recomendação: sempre revise e teste a saída das consultas em que CROSS APPLY foi convertido em LEFT OUTER JOIN para garantir a exatidão.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0083¶
Error Message¶
ROLLBACK TRANSACTION requires the appropriate setup to work as intended.
Gravidade¶
Low
Descrição¶
This EWI is generated when a ROLLBACK TRANSACTION statement is encountered, indicating that SnowConvert has successfully transformed the statement into a Snowflake-compatible format. However, the transformation requires manual verification because Snowflake’s transaction rollback behavior differs significantly from SQL Server’s ROLLBACK TRANSACTION functionality.
Exemplo de código¶
Input (SQL Server):¶
Output (Snowflake Scripting):¶
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0085¶
INSERT WITH EXECUTE statement requires manual review.
Gravidade¶
Medium
Descrição¶
This issue is generated when SnowConvert AI encounters an INSERT ... EXECUTE statement that cannot be automatically transformed. In SQL Server, INSERT ... EXEC inserts the result set of a stored procedure or dynamic SQL into a table. Snowflake does not support this syntax directly. When the statement appears at the top level (outside a stored procedure), SnowConvert AI cannot apply its standard transformation pattern and flags the statement for manual review.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Rewrite the logic using Snowflake Scripting: call the procedure separately, capture its result with
RESULT_SCAN(LAST_QUERY_ID()), and thenINSERT INTO ... SELECTfrom the result set.If the procedure returns a fixed schema, consider using a temporary table or
TABLE()function to capture the output.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0086¶
OPENQUERY is not supported in Snowflake.
Gravidade¶
High
Descrição¶
This issue is generated when SnowConvert AI encounters an OPENQUERY function. In SQL Server, OPENQUERY executes a pass-through query on a linked server and returns the result as a table. Snowflake does not have an equivalent linked server or OPENQUERY mechanism. The statement is preserved as-is with an EWI marker for manual migration.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Replace
OPENQUERYwith Snowflake external tables, external stages, or data sharing to access data from external sources.If the linked server points to another database, consider migrating that data into Snowflake or using Snowflake’s connector ecosystem (e.g., Snowflake Connector for Oracle).
For real-time access patterns, evaluate Snowflake External Network Access or External Functions.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0087¶
GOTO is not supported in Snowflake.
Gravidade¶
High
Descrição¶
This issue is generated when SnowConvert AI encounters a GOTO statement that cannot be automatically transformed.
When GOTO/Label patterns appear inside a stored procedure with only forward jumps to top-level labels, SnowConvert AI automatically transforms them into nested procedure definitions with CALL/RETURN semantics — no EWI is emitted in those cases. See the LABEL and GOTO translation reference for details on the transformation.
This EWI is only emitted when the GOTO cannot be transformed. This happens with backward GOTOs (where the target label appears before the GOTO in the source, which would require recursive calls), or when the GOTO appears inside anonymous blocks or UDFs (which do not support nested procedure definitions in Snowflake).
Exemplo de código¶
The following example shows a backward GOTO used for retry logic. Because RetryConnection appears before the GOTO that jumps to it, the transformation cannot be applied and the EWI is emitted:
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
For backward GOTO patterns like retry logic, refactor the control flow to use
WHILEorLOOPconstructs instead.For GOTO in anonymous blocks or UDFs, restructure the code into separate procedures or use
IF/ELSEcontrol flow.Forward GOTO patterns inside stored procedures are automatically transformed — no manual action is required for those cases.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
Related EWIs¶
SSC-EWI-TS0045: Labeled statement is not supported in Snowflake Scripting.
SSC-EWI-TS0103: GOTO targeting a label inside a nested block is not supported in Snowflake.
SSC-EWI-TS0088¶
Unsupported sequence options were removed during conversion.
Gravidade¶
Low
Descrição¶
This issue is generated when SnowConvert AI encounters a CREATE SEQUENCE statement with options that are not supported in Snowflake, such as MINVALUE, MAXVALUE, or CYCLE. These options are removed during conversion because Snowflake sequences only support START WITH and INCREMENT BY. The EWI message lists the specific options that were removed.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
If your application relies on
CYCLEbehavior, implement a wrapper UDF that resets the sequence value when it exceeds a threshold.If
MINVALUEorMAXVALUEbounds are critical, add application-level validation or a Snowflake task to monitor sequence values.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0089¶
SET statement is not supported in Snowflake.
Gravidade¶
Low
Descrição¶
This issue is generated when SnowConvert AI encounters a SET statement that changes a session option not supported in Snowflake and whose non-default value cannot be replicated. For example, SET CONCAT_NULL_YIELDS_NULL OFF changes SQL Server’s NULL concatenation behavior, but Snowflake always treats NULL || value as NULL (equivalent to CONCAT_NULL_YIELDS_NULL ON). Similarly, SET NUMERIC_ROUNDABORT ON raises errors on precision loss, which Snowflake does not support. The original statement is preserved with an EWI marker.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Review the downstream code that depends on this
SEToption. ForCONCAT_NULL_YIELDS_NULL OFF, replaceNULLconcatenation patterns with explicitNVL()orCOALESCE()calls to handle NULL values.For
NUMERIC_ROUNDABORT ON, add explicit rounding or precision checks in the application logic.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
Related EWIs¶
SSC-FDM-TS0037: SET statement with equivalent default behavior in Snowflake (e.g.,
SET CONCAT_NULL_YIELDS_NULL ON).
SSC-EWI-TS0090¶
Agent Job step uses an unsupported subsystem and requires manual migration.
Gravidade¶
Medium
Descrição¶
This issue is generated when SnowConvert AI encounters a SQL Server Agent Job step that uses a subsystem other than TSQL or SSIS (e.g., CmdExec, PowerShell, ANALYSISCOMMAND). These subsystems execute operating system commands or external tools that have no direct equivalent in Snowflake. The original sp_add_jobstep call is preserved with an EWI marker, and the step is not included in the generated Snowflake Task orchestration.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
For
CmdExecorPowerShellsteps, evaluate whether the logic can be rewritten as a Snowflake stored procedure, external function, or Snowflake task with a SQL body.For SSIS steps, use SnowConvert AI’s built-in ETL-to-dbt migration, which automatically generates orchestrator stored procedures.
Consider using Snowflake External Functions or Snowpark for operations that require external compute.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0091¶
Agent Job notification procedure requires manual setup of a Snowflake notification integration.
Gravidade¶
Medium
Descrição¶
This issue is generated when SnowConvert AI encounters a SQL Server Agent notification procedure such as sp_send_dbmail, sp_notify_operator, or similar email/alert procedures within an Agent Job context. These procedures rely on SQL Server’s Database Mail or Operator subsystem, which has no direct equivalent in Snowflake. A Snowflake notification integration must be manually configured to replicate this functionality.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Set up a Snowflake Notification Integration with an email provider or cloud messaging service (AWS SNS, Azure Event Grid, GCP Pub/Sub).
Use
SYSTEM$SEND_EMAIL()in Snowflake to send email notifications from stored procedures and tasks.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0092¶
Agent Job procedure references a dynamic job name that cannot be resolved statically.
Gravidade¶
Medium
Descrição¶
This issue is generated when SnowConvert AI encounters an Agent Job management procedure (sp_start_job, sp_stop_job, sp_delete_job, sp_update_job) where the @job_name parameter is a variable rather than a string literal. Because the job name cannot be resolved at conversion time, SnowConvert AI cannot determine which Snowflake Task to reference. The original statement is preserved with an EWI marker for manual resolution.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
If the job name is known at design time, replace the variable with a string literal so SnowConvert AI can resolve it to the corresponding Snowflake Task (e.g.,
EXECUTE TASK TASK_ETL_DAILY_LOAD).If the job name is truly dynamic, use
EXECUTE IMMEDIATEto build theEXECUTE TASKorALTER TASKstatement dynamically in Snowflake Scripting.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0093¶
Agent Job procedure is not supported.
Gravidade¶
Low
Descrição¶
This issue is generated when SnowConvert AI encounters a SQL Server Agent Job system procedure that does not have a supported translation to Snowflake. This includes procedures like sp_update_jobstep, sp_add_jobserver, and sp_update_job (when used without the @enabled parameter). These procedures manage Agent Job metadata that has no equivalent in Snowflake’s Task framework. The original statement is preserved with an EWI marker.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Review whether the procedure’s functionality is still needed in the Snowflake environment. Many Agent Job metadata operations (renaming steps, assigning servers) are not applicable in Snowflake’s Task model.
If the procedure modifies job scheduling or enablement, use
ALTER TASKin Snowflake instead.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0094¶
Error Message¶
WAITFOR DELAY variable may contain a time string incompatible with SYSTEM$WAIT.
Gravidade¶
Medium
Descrição¶
This EWI is generated when a WAITFOR DELAY statement uses a variable or parameter expression instead of a literal time value. The statement is transformed to CALL SYSTEM$WAIT(), which expects a numeric value representing seconds (or milliseconds). However, the variable may hold a time string in 'HH:MM:SS' format, which is incompatible with SYSTEM$WAIT.
For more information about SYSTEM$WAIT, see the Snowflake documentation.
Exemplo de código¶
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Ensure the variable passed to
SYSTEM$WAITcontains a numeric value in seconds, not a time string in'HH:MM:SS'format.If the variable holds a time string, convert it to seconds before passing it to
SYSTEM$WAIT.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0095¶
SCOPE_IDENTITY() called without a preceding INSERT to an identity table in the same scope.
Gravidade¶
High
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
SnowConvert AI was unable to determine the target table for SCOPE_IDENTITY(). No preceding INSERT to an identity table found in the same scope.
This EWI is generated when SCOPE_IDENTITY() is called without a preceding INSERT statement to a table with an IDENTITY column in the same procedural scope. In SQL Server, SCOPE_IDENTITY() returns the last identity value inserted in the current scope, but without a detectable INSERT, SnowConvert AI cannot generate the appropriate time-travel query.
The function call is kept as-is with this EWI, requiring manual review to determine the correct implementation.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (Snowflake):¶
Práticas recomendadas¶
Review the stored procedure logic to identify where the INSERT statement occurs
If the INSERT is in a different scope (e.g., nested block), refactor the code to make the INSERT detectable
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0096¶
SCOPE_IDENTITY() references a table that cannot be resolved in the symbol table.
Gravidade¶
High
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
SnowConvert AI was unable to resolve the target table for SCOPE_IDENTITY(). Missing table definition.
This EWI is generated when SCOPE_IDENTITY() follows an INSERT statement, but the target table cannot be resolved in the symbol table. This may occur when:
The table is defined in an external file not included in the conversion
The table name uses dynamic SQL or is otherwise unresolvable
The table definition is missing or incomplete
Without a resolvable table reference, SnowConvert AI cannot determine which identity column to query in the generated time-travel query.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (Snowflake):¶
Práticas recomendadas¶
Ensure all table definitions are included in the conversion input
Verify that the table name in the INSERT statement matches the table definition
If the table is external, provide the schema definition or manually implement the identity retrieval logic
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0097¶
SCOPE_IDENTITY() references a table without an identifiable identity column.
Gravidade¶
High
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
SnowConvert AI was unable to identify the identity column for SCOPE_IDENTITY(). Missing column definition.
This EWI is generated when SCOPE_IDENTITY() follows an INSERT statement to a table that exists in the symbol table but does not have an IDENTITY column defined. In SQL Server, SCOPE_IDENTITY() only returns values for tables with identity columns. Without an identifiable identity column, SnowConvert AI cannot generate the appropriate MAX(identity_column) query for the time-travel transformation.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (Snowflake):¶
Práticas recomendadas¶
Verify that the table definition includes an IDENTITY column specification
If the table should have an identity column, add the IDENTITY constraint to the CREATE TABLE statement before conversion
If the table should not use SCOPE_IDENTITY(), refactor the code to use a different method for retrieving the inserted ID
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0098¶
CONVERT with a non-literal style cannot be mapped to a Snowflake format string.
Gravidade¶
Medium
Descrição¶
This EWI is generated when the third argument of CONVERT is a variable or expression instead of a literal style code. SnowConvert AI can map literal style values to Snowflake format strings for TO_DATE and TO_TIMESTAMP, but when the style is dynamic it cannot determine the correct format at conversion time. In those cases SnowConvert AI falls back to CAST.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (Snowflake SQL):¶
Práticas recomendadas¶
Replace the dynamic style argument with a known literal format whenever possible.
If the style varies at runtime, rewrite the expression manually using the correct
TO_DATE,TO_TIMESTAMP, or conditional logic in Snowflake.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0099¶
The OBJECT_SCHEMA_NAME function is not supported in Snowflake.
Nota
This EWI is deprecated. OBJECT_SCHEMA_NAME is now converted to a helper UDF OBJECT_SCHEMA_NAME_UDF. When the two-argument form is used, refer to SSC-FDM-TS0060 for information about the removed database_id parameter.
Gravidade¶
Low
Nota
Algumas partes do código de saída foram omitidas por motivos de clareza.
Descrição¶
This EWI was generated when SnowConvert AI encountered the SQL Server OBJECT_SCHEMA_NAME(object_id [, database_id]) function, which returns the schema name for a schema-scoped object given its numeric object ID. Snowflake does not use numeric object IDs for metadata lookups.
This EWI has been replaced by an automatic conversion to a helper UDF (OBJECT_SCHEMA_NAME_UDF) that queries INFORMATION_SCHEMA to resolve schema names.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (Snowflake SQL) — Previous behavior:¶
Generated Code (Snowflake SQL) — Current behavior:¶
Práticas recomendadas¶
This EWI is no longer emitted.
OBJECT_SCHEMA_NAMEcalls are now automatically converted toOBJECT_SCHEMA_NAME_UDF.Review the generated UDF to ensure it resolves the correct schema for your objects.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0103¶
GOTO targeting a label inside a nested block is not supported in Snowflake.
Gravidade¶
High
Descrição¶
This EWI is generated when a GOTO targets a label that is declared inside a nested control flow block (such as IF, WHILE, BEGIN...END, or TRY...CATCH). SnowConvert AI’s GOTO/Label decomposition can only transform labels that are declared at the top level of a procedure body — labels buried inside nested blocks cannot be extracted into standalone nested procedures. When this happens, the GOTO is preserved with this EWI marker, while top-level labels in the same procedure are still transformed normally.
Exemplo de código¶
In this example, Done is a top-level label and is transformed into a nested procedure. However, HandlePartialFailure is declared inside a BEGIN...END block, so the GOTO targeting it cannot be transformed:
Código de entrada:¶
Código gerado:¶
Práticas recomendadas¶
Move the nested label to the top level of the procedure body so SnowConvert AI can transform it automatically.
Alternatively, replace the GOTO with structured
IF/ELSEorLOOPcontrol flow to avoid the jump entirely.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
Related EWIs¶
SSC-EWI-TS0045: Labeled statement is not supported in Snowflake Scripting.
SSC-EWI-TS0087: GOTO is not supported in Snowflake.
SSC-EWI-TS0104¶
System table query pattern could not be automatically converted.
Gravidade¶
Medium
Descrição¶
This EWI is generated when SnowConvert AI encounters a query pattern inside a system table query (such as sysconstraints) that it cannot translate automatically. Common triggers include:
OBJECT_NAME()called with an argument that doesn’t map to a known column (for example,OBJECT_NAME(status)instead ofOBJECT_NAME(constid)orOBJECT_NAME(id))OBJECT_NAME()compared against a non-literal value (a column reference, variable, or expression instead of a string literal)
In these cases the original expression is preserved and the EWI is emitted so you can review and rewrite the query manually.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (Snowflake SQL):¶
Input Code (SQL Server) - Non-literal comparison:¶
Generated Code (Snowflake SQL):¶
Práticas recomendadas¶
Replace
OBJECT_NAME(constid)withCONSTRAINT_NAMEandOBJECT_NAME(id)withTABLE_NAMEwhen queryingINFORMATION_SCHEMA.TABLE_CONSTRAINTS.Ensure that the comparison value is a string literal. If you need to compare against a variable or column, rewrite the query to use the equivalent
INFORMATION_SCHEMAcolumn directly.Review the sysconstraints translation reference for supported transformation patterns.
Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com
SSC-EWI-TS0107¶
CREATE TYPE AS TABLE cannot be converted to Snowflake
Gravidade¶
Medium
Descrição¶
SQL Server table types created with CREATE TYPE ... AS TABLE (...) are not mapped to a single Snowflake CREATE TYPE equivalent. SnowConvert flags this pattern so you can redesign using tables, views, or other Snowflake constructs.
Exemplo de código¶
Input Code (SQL Server):¶
Generated Code (Snowflake SQL):¶
Práticas recomendadas¶
Model reusable row shapes as permanent or transient tables, or use
OBJECT/VARIANTpatterns where appropriate.Se precisar de mais suporte, envie um e-mail para snowconvert-support@snowflake.com