Partilhar via


Configurações do projeto (conversão) (SybaseToSQL)

A página Conversão da caixa de diálogo Configurações do Projeto contém configurações que personalizam como o SSMA converte a sintaxe do SAP Adaptive Server Enterprise (ASE) na sintaxe do SQL Server ou do Azure SQL.

O painel Conversão está disponível nas caixas de diálogo Configurações do Projeto e Configurações Padrão do Projeto:

  • Se quiser especificar as configurações para todos os projetos SSMA, no menu Ferramentas, selecione Configurações padrão do projeto, clique em Geral na parte inferior do painel esquerdo e, em seguida, clique em Conversão.

  • Para especificar as configurações do projeto atual, no menu Ferramentas, selecione Configurações do projeto, clique em Geral na parte inferior do painel esquerdo e, em seguida, clique em Conversão.

Seção Diversos

@@ERROR

O SQL Server/SQL do Azure e o ASE usam códigos de erro diferentes.

Use essa configuração para especificar o tipo de mensagem (Aviso ou Erro) que o SSMA mostra no painel Saída ou Lista de Erros quando encontra uma referência a @@ERROR no código ASE.

  • Se você selecionar Converter e marcar com aviso, o SSMA converterá os comandos e os marcará com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA ignorará a conversão e marcará os extratos com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Converter e marcar com aviso
Otimista Converter e marcar com aviso
Completo Marcar com erro

Conversão do operador LIKE

Especifica se os operandos de LIKE devem ser convertidos para corresponder ao comportamento do SAP ASE. A questão é que o ASE corta os espaços em branco finais em um padrão LIKE. A solução alternativa é fazer uma conversão da expressão correta em um tipo de dados de comprimento fixo com uma precisão máxima.

  • Selecione Conversão simples para converter as expressões sem nenhuma correção.
  • Para usar o comportamento do ASE, selecione Converter em comprimento fixo.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Conversão simples
Otimista Conversão simples
Completo Converter em comprimento fixo

CONVERTER ou TRANSFORMAR cadeias de caracteres vazias em tipos numéricos

Especifica como lidar com cadeias de caracteres vazias ou em branco nas expressões CONVERT ou CAST com tipo numérico como argumento de tipo de dados. As seguintes opções estão disponíveis para essa configuração:

  • Selecione Conversão simples para converter as expressões sem nenhuma correção.
  • Se Cadeia de caracteres vazia como zero numérico for selecionado, o parâmetro de cadeia de caracteres {s} será substituído pela expressão CASE ltrim(rtrim({s})) WHEN "" THEN 0 else {s} END.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Conversão simples
Otimista Conversão simples
Completo Cadeia de caracteres vazia como zero numérico

Concatenação de NULL

Essa configuração especifica como converter a concatenação de cadeias de caracteres com NULL. As seguintes opções podem ser definidas para essa configuração específica:

  • Se a opção Encapsular com a função ISNULL for selecionada, cada string_expression não constante na concatenação será encapsulado por ISNULL(string_expression) e NULLs serão substituído por uma cadeia de caracteres vazia.
  • Manter sintaxe atual manterá a sintaxe original.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Manter sintaxe atual
Otimista Manter sintaxe atual
Completo Encapsular com a função ISNULL

Conversão de cadeias de caracteres vazias

Essa configuração especifica como converter cadeias de caracteres vazias. As seguintes opções podem ser definidas para essa configuração específica:

  • Substituir todas as expressões de cadeia de caracteres por espaço
  • Substituir constantes de cadeia de caracteres vazias por espaço

Para usar o comportamento do SQL Server/SQL do Azure, selecione Manter sintaxe atual.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Manter sintaxe atual
Otimista Manter sintaxe atual
Completo Substituir todas as expressões de cadeia de caracteres por espaço

CONVERTER e TRANSFORMAR conversão de cadeia de caracteres binária

A conversão de valores binários em números pode retornar valores diferentes em plataformas diferentes. Por exemplo, em processadores x86, CONVERT(integer, 0x00000100) retorna 65536 no ASE, mas 256 no SQL Server. O ASE também retorna valores diferentes dependendo da ordem dos bytes.

Use essa configuração para controlar como o SSMA converte as expressões CONVERT e CAST que contêm valores binários:

  • Selecione Conversão simples para converter as expressões sem nenhum aviso ou correção. Use essa configuração se você souber que o servidor ASE tem uma ordem de bytes que não exige alteração do valor binário.
  • Selecione Converter e corrigir para que o SSMA converta e corrija as expressões para uso no SQL Server. A ordem de bytes nas constantes literais será invertida. Todos os outros valores binários (como variáveis e colunas binárias) serão marcados com erros. Use esse valor se você souber que o servidor ASE tem uma ordem de bytes que exige alterações nos valores binários.

Selecione Converter e marcar com aviso para que o SSMA converta e corrija as expressões e marque todas as expressões convertidas com comentários de aviso.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Converter e marcar com aviso
Otimista Conversão simples
Completo Converter e corrigir

SQL dinâmico

Use essa configuração para especificar o tipo de mensagem (Aviso ou Erro) que o SSMA mostra no painel Saída ou Lista de Erros ao encontrar SQL dinâmico no código ASE.

  • Se você selecionar Converter e marcar com aviso, o SSMA converterá o SQL dinâmico e marcará as instruções com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA ignorará a conversão e marcará os extratos com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Converter e marcar com aviso
Otimista Converter e marcar com aviso
Completo Marcar com erro

Conversão do controle de igualdade

No SQL Server/SQL do Azure, se a configuração ANSI_NULLS estiver habilitada, o SQL Server/SQL do Azure retornará UNKNOWN quando qualquer comparação de igualdade contiver um valor NULL. Se ANSI_NULLS estiver desabilitado, as comparações de igualdade que contiverem valores NULL retornarão true quando a coluna e a expressão comparadas ou duas expressões forem ambas NULL. Por padrão (ANSINULL OFF), as comparações de igualdade do SAP ASE se comportam como as do SQL Server/SQL do Azure com ANSI_NULLS OFF.

  • Se você selecionar a opção Conversão simples, o SSMA converterá o código ASE na sintaxe do SQL Server/SQL do Azure sem verificações adicionais para os valores NULL. Use essa configuração se ANSI_NULLS for OFF no SQL Server/SQL do Azure ou se você quiser revisar as comparações de igualdade por caso.
  • Se você selecionar Considerar valores NULL, o SSMA adicionará verificações para os valores NULL usando as cláusulas IS NULL e IS NOT NULL.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Conversão simples
Otimista Conversão simples
Completo Considerar valores NULL

Cadeias de caracteres de formato

O SQL Server/SQL do Azure deixou de oferecer suporte ao argumento format_string nas instruções PRINT e RAISERROR. O argumento format_string permitia colocar parâmetros substituíveis diretamente na cadeia de caracteres e, em seguida, substituir os parâmetros em runtime. Em vez disso, o SQL Server exige a cadeia de caracteres completa usando uma literal de cadeia de caracteres ou uma cadeia de caracteres criada usando uma variável. Para obter mais informações, consulte o tópico PRINT (Transact-SQL).

Quando o SSMA encontra um argumento format_string, ele pode construir um literal de cadeia de caracteres usando as variáveis ou criar uma nova variável e construir uma cadeia de caracteres usando essa variável.

  • Para usar um literal de cadeia para as funções PRINT e RAISERROR, selecione Criar nova cadeia de caracteres.

    Nesse modo, se uma instrução PRINT ou RAISERROR não usar espaços reservados e variáveis locais, a instrução não será alterada. Os caracteres de porcentagem dupla (%%) são alterados para um único caractere de porcentagem % em literais de cadeia de caracteres PRINT.

    Se um comando PRINT ou RAISERROR usar espaços reservados e uma ou mais variáveis locais, como no exemplo a seguir:

    PRINT 'Total: %1!%%', @percent
    

    O SSMA o converterá na seguinte sintaxe:

    PRINT 'Total: '+ CAST(@percent AS varchar(max)) + '%'
    

    Se format_string for uma variável, como na instrução a seguir:

    PRINT @fmt, @arg1, @arg2
    

    O SSMA não pode fazer uma conversão simples de cadeia de caracteres e precisa criar uma nova variável:

    DECLARE @print_format_1 varchar(max)
    SET @print_format_1 =
        REPLACE (@fmt, '%%', '%')
    SET @print_format_1 =
        REPLACE (@print_format_1, '%1!',
        CAST (@arg1 AS varchar(max)))
    SET @print_format_1 =
        REPLACE (@print_format_1, '%2!',
        CAST (@arg2 AS varchar(max)))
    PRINT @print_format_1
    

    Quando ele usa o modo Criar nova cadeia de caracteres, o SSMA assume que a opção do SQL Server CONCAT_NULL_YIELDS_NULL é OFF. Portanto, o SSMA não verifica se há argumentos nulos.

  • Para que o SSMA crie uma nova variável para cada instrução PRINT e RAISERROR e, em seguida, use essa variável para o valor da cadeia de caracteres, selecione Criar nova variável.

    Nesse modo, se uma instrução PRINT ou RAISERROR não usar espaços reservados e variáveis locais, o SSMA substituirá todos os caracteres de porcentagem dupla (%%) por caracteres de porcentagem única para estar em conformidade com a sintaxe do SQL Server/SQL do Azure.

    Se um comando PRINT ou RAISERROR usar espaços reservados e uma ou mais variáveis locais, como no exemplo a seguir:

    PRINT 'Total: %1!%%', @percent
    

    O SSMA o converterá na seguinte sintaxe:

    DECLARE @print_format_1 varchar(max)
    SET @print_format_1 = 'Total: %1!%'
    SET @print_format_1 =
        REPLACE (@print_format_1, '%1!',
        ISNULL(CAST (@percent AS VARCHAR(max)), ''))
    PRINT @print_format_1
    

    Se format_string for uma variável, como na instrução a seguir:

    PRINT @fmt, @arg1, @arg2
    

    O SSMA cria uma nova variável da seguinte forma, verificando se há valores nulos em cada argumento:

    DECLARE @print_format_1 varchar(max)
    SET @print_format_1 =
        REPLACE (@fmt, '%%', '%')
    SET @print_format_1 =
        REPLACE (@print_format_1, '%1!',
        ISNULL(CAST (@arg1 AS varchar(max)),''))
    SET @print_format_1 =
        REPLACE (@print_format_1, '%2!',
        ISNULL(CAST (@arg2 AS varchar(max)),''))
    PRINT @print_format_1
    

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Criar nova cadeia de caracteres
Otimista Criar nova cadeia de caracteres
Completo Criar nova variável

Inserir um valor explícito em uma coluna de carimbo de data/hora

O SQL Server/SQL do Azure não oferece suporte a inserção de valores explícitos em uma coluna de carimbo de data/hora.

  • Para excluir colunas de carimbo de data/hora das instruções INSERT, selecione Excluir coluna.
  • Para imprimir uma mensagem de erro sempre que uma coluna de carimbo de data/hora estiver em um comando INSERT, selecione Marcar com erro. Nesse modo, os comandos INSERT não serão convertidos e serão marcados com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Excluir coluna
Otimista Excluir coluna
Completo Marcar com erro

Armazenar objetos temporários definidos em procedimentos

Essa configuração especifica se as definições de objetos temporários que aparecem nos procedimentos devem ser armazenadas nos metadados de origem durante a conversão.

  • Selecione Sim para armazenar em metadados.
  • Selecione Não se os objetos não precisarem ser armazenados.
Modo Valor
Padrão Sim
Otimista Sim
Completo Não

Conversão da tabela de proxy

Especifica se as tabelas proxy do ASE são convertidas em tabelas do SQL Server/SQL do Azure ou se não são convertidas e o código é marcado com comentários de erro.

  • Selecione Converter para converter tabelas proxy em tabelas regulares.
  • Selecione Marcar com erro para simplesmente marcar o código da tabela proxy com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Marcar com erro
Otimista Marcar com erro
Completo Marcar com erro

Número da mensagem base RAISERROR

As mensagens do usuário do ASE são armazenadas em cada banco de dados. As mensagens de usuário do SQL Server são armazenadas de forma centralizada e disponibilizadas por meio da exibição de catálogo sys.messages. Além disso, as mensagens de usuários do ASE começam em 20000, mas as mensagens de erro do SQL Server começam em 50001.

Essa configuração especifica o número a ser adicionado ao número da mensagem do usuário do ASE para convertê-la em uma mensagem do usuário do SQL Server. Se o seu SQL Server tiver mensagens de usuário na exibição de catálogo sys.messages, talvez seja necessário alterar esse número para um valor mais alto. Isso ocorre para que os números de mensagens convertidos não entrem em conflito com os números de mensagens existentes.

Observe o seguinte:

  • As mensagens ASE no intervalo 17000-19999 são da tabela do sistema sysmessages e não são convertidas.
  • Se o número da mensagem referenciado na instrução RAISERROR for uma constante, o SSMA adicionará o número da mensagem base à constante para determinar o novo número da mensagem do usuário.
  • Se o número da mensagem referenciada for uma variável ou expressão, o SSMA criará uma variável local intermediária.
  • No modo Otimista, o SSMA pressupõe que a opção do SQL Server CONCAT_NULL_YIELDS_NULL seja OFF e não faz verificações para os argumentos NULL.
  • No modo Completo, o SSMA verifica argumentos NULL.
  • RAISERROR com o argumento arg-list não é convertido.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão 30001
Otimista 30001
Completo 30001

Objetos do sistema

Use essa configuração para especificar o tipo de mensagem (Aviso ou Erro) que o SSMA mostra no painel Saída ou Lista de Erros quando se depara com o uso de objetos do sistema ASE.

  • Se você selecionar Converter e marcar com aviso, o SSMA converterá as referências a objetos do sistema e marcará as instruções com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA não converterá referências a objetos do sistema e marcará as instruções com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Converter e marcar com aviso
Otimista Converter e marcar com aviso
Completo Marcar com erro

Identificadores não resolvidos

Use essa configuração para especificar o tipo de mensagem (Aviso ou Erro) que o SSMA mostra no painel Saída ou Lista de Erros quando não consegue resolver um identificador.

  • Se você selecionar Converter e marcar com aviso, o SSMA tentará converter referências a identificadores não resolvidos e marcará as instruções com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA não converterá referências a identificadores não resolvidos e marcará as instruções com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Converter e marcar com aviso
Otimista Converter e marcar com aviso
Completo Marcar com erro

Seção Funções do sistema

Função CHARINDEX

No ASE, CHARINDEX retornará NULL somente se todas as expressões de entrada forem NULL. O SQL Server/SQL do Azure retornará NULL se alguma expressão de entrada for NULL.

  • Para usar o comportamento do ASE, selecione Substituir função. Todas as chamadas para a função CHARINDEX são substituídas por uma chamada para a função definida pelo usuário CHARINDEX_VARCHAR ou CHARINDEX_NVARCHAR com base no tipo de parâmetros passados (criados no banco de dados do usuário com o nome de esquema s2ss) para emular o comportamento do SAP ASE.
  • Para usar o comportamento do SQL Server/SQL do Azure, selecione Manter sintaxe atual.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Manter sintaxe atual
Otimista Manter sintaxe atual
Completo Substituir função

Função DATALENGTH

O SQL Server/SQL do Azure e o ASE diferem no valor retornado pela função DATALENGTH quando o valor é um único espaço. Nesse caso, o SQL Server/SQL do Azure retorna 0 e o ASE retorna 1.

  • Para usar o comportamento do ASE, selecione Substituir função. Todas as chamadas para a função DATALENGTH são substituídas pela expressão CASE para emular o comportamento do SAP ASE.
  • Para usar o comportamento padrão do SQL Server/SQL do Azure, selecione Manter sintaxe atual.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Manter sintaxe atual
Otimista Manter sintaxe atual
Completo Substituir função

Função INDEX_COL

O ASE oferece suporte a um argumento opcional user_id para a função INDEX_COL; no entanto, o SQL Server/SQL do Azure não oferece suporte a esse argumento. Se você usar o argumento user_id, essa função não poderá ser convertida na sintaxe do SQL Server/SQL do Azure.

  • Para usar o comportamento do ASE, selecione Converter função. Se o código contiver o argumento user_id, o SSMA exibirá um erro.
  • Para exibir uma mensagem de erro sempre que INDEX_COL for encontrado, selecione Marcar com erro. O SSMA não converterá as referências à função e marcará a instrução com comentários de erro.
Modo Valor
Padrão Marcar com erro
Otimista Marcar com erro
Completo Marcar com erro

Função INDEX_COLORDER

O SQL Server/SQL do Azure não tem uma função de sistema INDEX_COLORDER.

  • Para usar o comportamento do ASE, selecione Converter função. Todas as chamadas para a função INDEX_COLORDER são substituídas por uma chamada para uma função definida pelo usuário com o mesmo nome INDEX_COLORDER (criada no banco de dados do usuário com o nome de esquema s2ss), que emula o comportamento do SAP ASE.
  • Para imprimir uma mensagem de erro sempre que INDEX_COLORDER for encontrado, selecione Marcar com erro. O SSMA não converterá as referências à função e marcará a instrução com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Marcar com erro
Otimista Marcar com erro
Completo Marcar com erro

Funções LEFT e RIGHT

LEFT e RIGHT no ASE se comportam de forma diferente para o parâmetro de comprimento negativo.

  • Para usar o comportamento do ASE, selecione Substituir função. O parâmetro length é então substituído pela expressão CASE que retornaria NULL para valores negativos.
  • Para usar o comportamento do SQL Server, selecione Manter sintaxe atual.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Manter sintaxe atual
Otimista Manter sintaxe atual
Completo Substituir função

Observação

Se o parâmetro de comprimento for um valor literal e não uma expressão complexa, o valor do comprimento será sempre substituído por NULL, independentemente da configuração do projeto.

Função NEXT_IDENTITY

O SQL Server/SQL do Azure não tem uma função de sistema NEXT_IDENTITY.

  • Para usar o comportamento do ASE, selecione Converter função. Todas as chamadas para a função NEXT_IDENTITY são substituídas pela expressão (IDENT_CURRENT(parameter Value) + IDENT_INCR(parameter Value), que emula o comportamento do SAP ASE.
  • Para imprimir uma mensagem de erro sempre que NEXT_IDENTITY for encontrado, selecione Marcar com erro. O SSMA não converterá as referências à função e marcará a instrução com comentários de erro.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Marcar com erro
Otimista Marcar com erro
Completo Marcar com erro

Modo Padrão/Optimista/Completo: Marcar com erro

Função PATINDEX

Especifica se a função PATINDEX deve ser convertida para corresponder ao comportamento do SAP ASE. A questão é que o ASE apara os espaços em branco finais em um padrão de pesquisa. A solução alternativa é fazer uma conversão da expressão de valor em um tipo de dados de comprimento fixo com precisão máxima e aplicar a função rtrim ao padrão de pesquisa.

  • Para usar o comportamento do ASE, selecione Usar.
  • Para usar o comportamento padrão do SQL Server/SQL do Azure, selecione Não usar.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Não usar
Otimista Não usar
Completo Usar

função REPLICATE

A função REPLICATE repete uma cadeia de caracteres o número de vezes especificado. No ASE, se você especificar a repetição da cadeia de caracteres zero vezes, o resultado será NULL. No SQL Server/SQL do Azure, o resultado é uma cadeia de caracteres vazia.

  • Para usar o comportamento do ASE, selecione Substituir função. Todas as chamadas para a função REPLICATE são substituídas por uma chamada para a função definida pelo usuário REPLICATE_VARCHAR ou REPLICATE_NVARCHAR com base no tipo de parâmetros passados (criados no banco de dados do usuário com o nome de esquema s2ss) para emular o comportamento do SAP ASE.
  • Para usar o comportamento padrão do SQL Server/SQL do Azure, selecione Substituir função.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Substituir função
Otimista Substituir função
Completo Substituir função

Função TRIM (LTRIM, RTRIM)

Essa configuração especifica se as chamadas às funções TRIM, LTRIM e RTRIM devem ser substituídas pelas funções de sintaxe equivalentes ao SAP ASE ou se a sintaxe atual deve ser mantida. As seguintes opções estão presentes para essa configuração específica:

  • Substituir função
  • Manter sintaxe atual

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Substituir função
Otimista Substituir função
Completo Substituir função

função SUBSTRING

No ASE, a função SUBSTRING(expression, start, length) retorna NULL se for especificado um valor inicial maior que o número de caracteres na expressão ou se o comprimento for igual a zero. No SQL Server/SQL do Azure, a expressão equivalente retorna uma cadeia de caracteres vazia.

  • Para usar o comportamento do ASE, selecione Substituir função. Todas as chamadas para a função SUBSTRING são substituídas por uma chamada para a função definida pelo usuário SUBSTRING_VARCHAR, SUBSTRING_NVARCHAR ou SUBSTRING_VARBINARY com base no tipo de parâmetros passados (criados no banco de dados do usuário com o nome de esquema s2ss) para emular o comportamento do SAP ASE.
  • Para usar o comportamento do SQL Server/SQL do Azure, selecione Manter sintaxe atual.

Quando você seleciona um modo de conversão na caixa Modo, o SSMA aplica a seguinte configuração:

Modo Valor
Padrão Manter sintaxe atual
Otimista Manter sintaxe atual
Completo Substituir função

Seção Tabelas

Adicionar chave primária

Cria uma nova chave primária na tabela do SQL Server ou do SQL do Azure se uma tabela do SAP ASE não tiver chave primária ou índice exclusivo.

Modo Valor
Padrão Não
Otimista Não
Completo Sim

Observação

Quando conectado ao SQL do Azure, é Sim por padrão.

Confira também

Referência da interface do usuário (SybaseToSQL)