Partilhar via


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

A página Conversão de 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) em SQL Server ou SQL do Azure.

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

  • Se desejar especificar 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 para o 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.

Secção diversa

@@ERROR

SQL Server/Azure SQL e 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 comde aviso, o SSMA converterá as instruções e as marcará com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA ignorará a conversão 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 sinalizar com aviso
Completo Assinalar como 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 espaços em branco à direita em um padrão semelhante. A solução alternativa é fazer uma conversão de expressão correta para um tipo de dados de comprimento fixo com uma precisão máxima.

  • Selecione conversão simples para converter as expressões sem qualquer correção.
  • Para usar o comportamento ASE, selecione Converter para um 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 Fundido para comprimento fixo

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

Especifica como manipular cadeias de caracteres vazias ou em branco dentro de 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 qualquer correção.
  • Se Cadeia de caracteres vazia como numérico zero estiver selecionada, então 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

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

  • Se a opção Wrap with ISNULL function for selecionada, em concatenação, todos os string_expression não constantes serão encapsulados com ISNULL(string_expression) e os NULLserão substituídos por uma cadeia de caracteres vazia.
  • Manter a 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 a sintaxe atual
Otimista Manter a sintaxe atual
Completo Envolver com a função ISNULL

Conversão de strings vazias

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

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

Para usar o comportamento SQL Server/Azure SQL, 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 a sintaxe atual
Otimista Manter a sintaxe atual
Completo Substitua todas as expressões de cadeia de caracteres por espaço

Conversão de string binária CONVERT e CAST

A conversão de valores binários em números pode retornar valores diferentes em diferentes plataformas. 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 de bytes.

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

  • Selecione Conversão simples para converter as expressões sem qualquer aviso ou correção. Use essa configuração se souber que o servidor ASE tem uma ordem de bytes que não requer nenhuma 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 dos bytes em constantes literais será invertida. Todos os outros valores binários (como variáveis binárias e colunas) serão marcados com erros. Use esse valor se souber que o servidor ASE tem uma ordem de bytes que requer alterações nos valores binários.

Selecione para converter e marcar com o 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 de Saída ou Lista de Erros quando encontrar SQL dinâmico no código ASE.

  • Se selecionar Converter e marcar com aviso, o SSMA converterá o SQL dinâmico e marcará as declarações com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA ignorará a conversão 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 sinalizar com aviso
Otimista Converter e marcar com aviso
Completo Marcar com erro

Conversão do cheque de igualdade

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

  • Se selecionar conversão simples, o SSMA converterá o código ASE para a sintaxe do SQL Server/Azure SQL sem verificações adicionais dos valores de NULL. Use essa configuração se ANSI_NULLS estiver OFF no SQL Server/Azure SQL ou se quiser revisar comparações de igualdade por caso.
  • Se você selecionar Considerar valores NULL, o SSMA adicionará verificações para 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
Predefinição Conversão simples
Otimista Conversão simples
Completo Considere valores NULL

Formatar cadeias de caracteres

O SQL Server/Azure SQL não dá mais 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 tempo de execução. Em vez disso, o SQL Server requer a cadeia de caracteres completa usando um 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, pode criar um literal de texto usando as variáveis ou gerar uma nova variável e criar uma cadeia de caracteres usando essa variável.

  • Para usar um literal de cadeia de caracteres para 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. Caracteres de porcentagem dupla (%%) são alterados para um único caractere de porcentagem % em literais de cadeia de caracteres PRINT.

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

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

    SSMA irá convertê-lo para a 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 de cadeia de caracteres simples e deve 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 utiliza o modo Criar nova cadeia de caracteres, o SSMA assume que a opção CONCAT_NULL_YIELDS_NULL do SQL Server é 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 SQL Server/Azure SQL.

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

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

    SSMA irá convertê-lo para a 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 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
Predefinição Criar nova cadeia de caracteres
Otimista Criar nova cadeia de caracteres
Completo Criar nova variável

Inserir um valor explícito numa coluna de timestamp

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

  • Para excluir colunas de carimbo de data/hora de instruções INSERT, selecione Excluir a coluna.
  • Para imprimir uma mensagem de erro sempre que uma coluna de timestamp estiver em uma instrução INSERT, selecione Marcar com erro. Neste modo, as instruções INSERT não serão convertidas e serão marcadas 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 Assinalar como 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 Sem se os objetos não precisarem ser armazenados.
Modo Valor
Padrão Sim
Otimista Sim
Completo Não

Conversão de tabela proxy

Especifica se as tabelas de proxy ASE são convertidas em tabelas SQL Server/Azure ou 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 de 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

RAISERROR número da mensagem base

As mensagens do usuário ASE são armazenadas em cada banco de dados. As mensagens de usuário do SQL Server são armazenadas centralmente e disponibilizadas por meio da exibição de catálogo sys.messages. Além disso, as mensagens de usuário 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 de mensagem do usuário ASE para convertê-lo em uma mensagem de usuário do SQL Server. Se o SQL Server tiver mensagens de usuário no modo de exibição de catálogo sys.messages, talvez seja necessário alterar esse número para um valor mais alto. Isso é para que os números de mensagem convertidos não entrem em conflito com os números de mensagem 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 de 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 assume que a opção CONCAT_NULL_YIELDS_NULL do SQL Server é OFF e não faz verificações de NULL argumentos.
  • Em Modo Completo, o SSMA verifica se há NULL argumentos.
  • RAISERROR não é convertido com o argumento arg-list.

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

Utilize esta configuração para especificar o tipo de mensagem (Aviso ou Erro) que o SSMA mostra no painel Saída ou Lista de Erros quando detetar o uso de objetos do sistema ASE.

  • Se selecionar Converter e marcar com o aviso, o SSMA converterá as referências aos objetos do sistema e marcará as instruções com comentários de aviso.
  • Se selecionar Marcarcom erro, o SSMA não converterá referências a objetos de sistemas e marcará declaraçõ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 Assinalar como erro

Identificadores não resolvidos

Use esta 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 for possível resolver um identificador.

  • Se optar por Converter e marcar comode aviso, o SSMA tentará converter referências para identificadores não resolvidos e marcará as instruções com comentários de aviso.
  • Se tu selecionares Marcar com erro, o SSMA não converte 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

Secção Funções do sistema

Função CHARINDEX

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

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

Função DATALENGTH

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

  • Para utilizar o comportamento ASE, selecione a função Substituir . 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/Azure SQL, 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 a sintaxe atual
Otimista Manter a sintaxe atual
Completo Função Substituir

Função INDEX_COL

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

  • Para usar o comportamento ASE, selecione a função Converter . 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á 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

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

  • Para usar o comportamento ASE, selecione a função Converter . Todas as chamadas para INDEX_COLORDER função 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 sob o nome do esquema s2ss) que emula o comportamento SAP ASE.
  • Para imprimir uma mensagem de erro sempre que INDEX_COLORDER for encontrado, selecione a opção Marcar com erro. O SSMA não converterá 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 ESQUERDA e DIREITA

As funções LEFT e RIGHT no ASE comportam-se de forma diferente para o parâmetro de comprimento negativo.

  • Para usar o comportamento ASE, selecione Substituir função. O parâmetro length é então substituído por CASE expressão que retornaria NULL para o valor negativo.
  • 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 a sintaxe atual
Otimista Manter a sintaxe atual
Completo Função Substituir

Observação

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

função NEXT_IDENTITY

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

  • Para usar o comportamento ASE, selecione Convert Function. Todas as chamadas para a função NEXT_IDENTITY são substituídas por uma 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á referências à função e assinalará 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 Marque como erro
Otimista Marcar com erro
Completo Marcar com erro

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

Função PATINDEX

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

  • Para usar o comportamento ASE, selecione Use.
  • Para usar o comportamento padrão do SQL Server/Azure SQL, 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 utilize
Otimista Não utilize
Completo Utilização

Função REPLICAR

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

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

Função TRIM (LTRIM, RTRIM)

Essa configuração especifica se as chamadas para 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 a sintaxe atual

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

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

Função SUBSTRING

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

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

Secção Tabelas

Adicionar chave primária

Cria uma nova chave primária na tabela SQL Server ou SQL do Azure se uma tabela 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, ele é Sim por padrão.

Ver também

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