Compartilhar 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) em SQL Server ou sintaxe SQL do Azure.

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

  • Se você quiser 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 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 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 encontrar uma referência no @@ERROR código ASE.

  • Se você selecionar Converter e marcar com 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 marcar com aviso
Completo Marcar como erro

Conversão do operador LIKE

Especifica se os operandos 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 da expressão correta para um tipo de dados de comprimento fixo com máxima precisão.

  • Selecione Conversão simples para converter as expressões sem nenhuma correção.
  • Para usar o comportamento do ASE, selecione Converta para 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 Conversão em comprimento fixo

CONVERTER ou TRANSFORMAR strings vazias em tipos numéricos

Especifica como lidar com cadeias de caracteres vazias ou em branco dentro CONVERT ou CAST expressões com tipo numérico como argumento de tipo de dados. As seguintes opções estão disponíveis para esta 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 selecionada, o parâmetro {s} de cadeia de caracteres 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 cadeia de caracteres com NULL. As seguintes opções podem ser definidas para esta configuração específica:

  • Se a opção Encapsular com a função ISNULL estiver selecionada, cada string_expression não constante na concatenação será encapsulada com ISNULL(string_expression), e NULLs serão substituídos por uma string 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 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 esta 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 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 Manter a sintaxe atual
Otimista Manter a sintaxe atual
Completo Substituir todas as expressões de cadeia de caracteres por espaço

Conversão de sequência binária com CONVERT e CAST

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 de bytes.

Use essa 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 avisos ou correção. Use essa configuração se souber que o servidor ASE tem uma ordem de bytes que não exige 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 de bytes em constantes literais será revertida. 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 exige alterações nos valores binários.

Selecione 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 Saída ou Lista de Erros quando 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á 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 como erro

Conversão para checagem de igualdade

No SQL Server/SQL do Azure, 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 ANSI_NULLS estiver desativado, as comparações de igualdade que contêm valores NULL retornarão "true" quando a coluna e a expressão, ou duas expressões, forem ambas NULL. Por padrão (ANSINULL OFF), as comparações de igualdade no SAP ASE se comportam como no SQL Server/Azure SQL com ANSI_NULLS OFF.

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

Formatar cadeias de caracteres

O SQL Server/SQL do Azure não dá mais suporte ao argumento format_string nas instruções PRINT e RAISERROR. O format_string argumento permite incluir parâmetros substituíveis diretamente na cadeia de caracteres e, em seguida, substituí-los 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 format_string argumento, ele pode criar um literal de cadeia de caracteres usando as variáveis ou criar uma nova variável e criar uma cadeia de caracteres usando essa variável.

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

    Se uma instrução PRINT ou RAISERROR utilizar espaços reservados (placeholders) 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 seguinte instrução:

    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 ele usa o modo Criar nova cadeia de caracteres, o SSMA pressupõe que a opção CONCAT_NULL_YIELDS_NULL do SQL Server seja 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 utilize essa variável para armazenar 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
    

    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 seguinte instrução:

    PRINT @fmt, @arg1, @arg2
    

    O SSMA cria uma nova variável da seguinte maneira, 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 uma nova variável

Inserir um valor explícito em uma coluna de timestamp

O SQL Server/Azure SQL não oferece suporte para inserir valores explícitos em uma coluna de timestamp.

  • Para excluir colunas de marca temporal das INSERT instruções, selecione Excluir coluna.
  • Para imprimir uma mensagem de erro sempre que uma coluna de timestamp estiver em uma instrução INSERT, selecione Marcar com erro. Nesse modo, INSERT as declarações não serão convertidas e serão acompanhadas de 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 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 Não se os objetos não precisarem ser armazenados.
Modo Valor
Padrão Sim
Otimista Sim
Completo Não

Conversão de tabela de proxy

Especifica se as tabelas de proxy do ASE são convertidas em tabelas SQL Server/SQL do 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 erro para marcar o código da tabela proxy com comentários indicando o erro.

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

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

Número base da mensagem RAISERROR

As mensagens de usuário do 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 do sys.messages catálogo. Além disso, as mensagens de usuário 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 de mensagem do usuário do ASE para convertê-lo em uma mensagem de usuário do SQL Server. Se houver mensagens de usuário no SQL Server na vista 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 mensagem 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 sysmessages sistema e não são convertidas.
  • Se o número da mensagem referenciado na instrução for uma constante, o RAISERROR SSMA adicionará o número de mensagem base à constante para determinar o novo número de mensagem do usuário.
  • Se o número de mensagem referenciado 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 CONCAT_NULL_YIELDS_NULL do SQL Server é OFF e não faz verificações de NULL argumentos.
  • No modo Completo, o SSMA verifica para NULL argumentos.
  • RAISERROR com arg-list argumento 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 encontrar o uso de objetos do sistema ASE.

  • Se você selecionar Converter e marcar com aviso, o SSMA converterá referências a objetos do sistema e marcará instruções com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA não converterá referências em 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 como 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 puder resolver um identificador.

  • Se você selecionar Converter e marcar com aviso, o SSMA tentará converter referências a identificadores não resolvidos e marcará declarações com comentários de aviso.
  • Se você selecionar Marcar com erro, o SSMA não converterá referências em identificadores não resolvidos e marcará 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 como erro

Seçã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/SQL do Azure retornará NULL se qualquer expressão de entrada for NULL.

  • Para usar o comportamento do ASE, selecione Substituir função. Todas as chamadas à função CHARINDEX são substituídas por chamadas para as funções definidas pelo usuário CHARINDEX_VARCHAR ou CHARINDEX_NVARCHAR, 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 do SQL Server/SQL do Azure, selecione 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 Manter a sintaxe atual
Otimista Manter a sintaxe atual
Completo Função Replace

Função DATALENGTH

SQL Server/SQL Azure e 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 DATALENGTH função são substituídas pela CASE expressão para emular o comportamento do SAP ASE.
  • Para usar o comportamento padrão do SQL Server/SQL do Azure, selecione 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 Manter a sintaxe atual
Otimista Manter a sintaxe atual
Completo Função Replace

função INDEX_COL

O ASE dá suporte a um argumento opcional user_id para a função; no entanto, o INDEX_COL SQL Server/SQL do Azure não dá suporte a esse argumento. Se você usar o user_id argumento, essa função não poderá ser convertida em sintaxe 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 encontrada, selecione Marcar com erro. O SSMA não converterá referências à função e marcará a instrução com comentários indicando erro.
Modo Valor
Padrão Marcar como erro
Otimista Marcar como erro
Completo Marcar como erro

função INDEX_COLORDER

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

  • 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 sob o nome do esquema s2ss) que emula o comportamento do SAP ASE.
  • Para imprimir uma mensagem de erro sempre que INDEX_COLORDER for encontrada, selecione Marcar com erro. O SSMA não converterá referências à função e marcará a instrução com comentários indicando erro.

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

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

Funções LEFT e RIGHT

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

  • Para usar o comportamento do ASE, selecione Substituir Função. Em seguida, o parâmetro de comprimento é substituído pela CASE expressão que retornaria NULL para valor negativo.
  • Para usar o comportamento do SQL Server, selecione 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 Manter a sintaxe atual
Otimista Manter a sintaxe atual
Completo Função Replace

Observação

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

função NEXT_IDENTITY

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

  • Para usar o comportamento do ASE, selecione Converter Função. Todas as chamadas para a NEXT_IDENTITY função 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 encontrada, selecione Marcar com erro. O SSMA não converterá referências à função e marcará a instrução com comentários indicando erro.

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

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

Modo padrão/otimista/completo: Marcar como erro

Função PATINDEX

Especifica se a função deve ser convertida PATINDEX para corresponder ao comportamento do SAP ASE. A questão é que o ASE corta espaços em branco à direita em um padrão de pesquisa. A solução alternativa é fazer uma conversão de 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 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 Utilização

Função REPLICAR

A REPLICATE função repete uma cadeia de caracteres o número de vezes especificado. No ASE, se você especificar para repetir a 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 à função REPLICATE são substituídas por chamadas para as funções definidas pelo usuário REPLICATE_VARCHAR ou REPLICATE_NVARCHAR, 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 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 Função Replace
Otimista Função Replace
Completo Função Replace

Função TRIM (LTRIM, RTRIM)

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

  • Função Substituir
  • 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 Replace
Otimista Função Replace
Completo Função Replace

Função SUBSTRING

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

  • Para usar o comportamento do ASE, selecione Substituir função. Todas as chamadas à função SUBSTRING são substituídas por uma chamada à função SUBSTRING_VARCHAR, SUBSTRING_NVARCHAR ou SUBSTRING_VARBINARY, definidas 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 do SQL Server/SQL do Azure, selecione 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 Manter a sintaxe atual
Otimista Manter a sintaxe atual
Completo Função Replace

Seção Tabelas

Adicionar chave primária

Cria uma nova chave primária na tabela SQL Server ou 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.

Consulte Também

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