Diferenças do T-SQL no Babelfish - Amazon Aurora

Diferenças do T-SQL no Babelfish

A seguir, você pode encontrar uma tabela de funcionalidades do T-SQL compatíveis com a versão atual do Babelfish, com algumas notas sobre as diferenças no comportamento do SQL Server.

Para obter mais informações sobre a compatibilidade com várias versões, consulte Funcionalidade compatível no Babelfish por versão. Para obter informações sobre recursos que atualmente não são compatíveis, consulte Funcionalidade não compatível com o Babelfish.

O Babelfish está disponível com a edição compatível com Aurora PostgreSQL. Para obter mais informações sobre as versões do Babelfish, consulte as Notas de lançamento do Aurora PostgreSQL.

Funcionalidade ou sintaxe Descrição do comportamento ou da diferença
\ (caractere de continuação de linha) O caractere de continuação de linha (uma barra invertida antes de uma nova linha) para caracteres e strings hexadecimais não é compatível no momento. Para strings de caracteres, a nova linha da barra invertida é interpretada como caracteres na string. Para strings hexadecimais, a nova linha da barra invertida gera um erro de sintaxe.

@@version

O formato do valor retornado por @@version é um pouco diferente do valor retornado pelo SQL Server. Seu código talvez não funcione corretamente se depender da formatação de @@version.

Funções agregadas

As funções agregadas são parcialmente compatíveis (AVG, COUNT, COUNT_BIG, GROUPING, MAX, MIN, STRING_AGG e SUM são compatíveis). Para ver uma lista de funções agregadas não compatíveis, consulte Funções que não há suporte.

ALTER TABLE

Suporta adicionar ou soltar uma única coluna ou restrição somente.

ALTER TABLE..ALTER COLUMN

NULL e NOT NULL não podem ser especificados no momento. Para alterar a nulidade de uma coluna, use a instrução ALTER TABLE..{SET|DROP} NOT NULL do PostgreSQL.

Nomes de colunas em branco sem alias de coluna

Os utilitários sqlcmd e psql lidam com colunas com nomes em branco de maneira diferente:

  • O sqlcmd do SQL Server retorna um nome de coluna em branco.

  • O psql do PostgreSQL retorna um nome de coluna gerado.

Função CHECKSUM

O Babelfish e o SQL Server usam diferentes algoritmos de hash para a função CHECKSUM. Como resultado, os valores de hash gerados pela função CHECKSUM no Babelfish podem ser diferentes daqueles gerados pela função CHECKSUM no SQL Server.

Padrão de coluna

Ao criar um padrão de coluna, o nome da restrição é ignorado. Para descartar um padrão de coluna, utilize a seguinte sintaxe: ALTER TABLE...ALTER COLUMN..DROP DEFAULT...

Restrições

O PostgreSQL não oferece suporte à ativação e à desativação de restrições individuais. A instrução é ignorada, e um aviso é gerado.

Restrições criadas com colunas DESC (descendentes)

Restrições são criadas com colunas ASC (ascendentes).

Restrições com IGNORE_DUP_KEY

Restrições são criadas sem essa propriedade.

CREATE, ALTER, DROP SERVER ROLE

ALTER SERVER ROLE tem suporte apenas para sysadmin. Todas as outras sintaxes são incompatíveis.

O usuário T-SQL no Babelfish tem uma experiência semelhante à do SQL Server para os conceitos de login (entidade principal de servidor), banco de dados e usuário de banco de dados (entidade principal de banco de dados).

Cláusulas CREATE, ALTER LOGIN têm suporte com sintaxe limitada

Há suporte para as cláusulas CREATE LOGIN... PASSWORD, ...DEFAULT_DATABASE e ...DEFAULT_LANGUAGE. Há suporte para a cláusula ALTER LOGIN... PASSWORD, mas não para a cláusula ALTER LOGIN... OLD_PASSWORD. Apenas um login que seja um membro sysadmin pode modificar uma senha.

Agrupamento CREATE DATABASE com distinção entre maiúsculas e minúsculas

Não há suporte para agrupamentos com distinção entre maiúsculas e minúsculas para a instrução CREATE DATABASE.

Palavras-chave e cláusulas CREATE DATABASE

Não há suporte para opções, exceto COLLATE e CONTAINMENT=NONE. A cláusula COLLATE tem suporte e sempre é definida como o valor de babelfishpg_tsql.server_collation_name.

Cláusulas de suporte CREATE SCHEMA...

Você pode utilizar o comando CREATE SCHEMA para criar um esquema vazio. Utilize comandos adicionais para criar objetos de esquema.

Os valores de ID de banco de dados são diferentes no Babelfish

Os bancos de dados primário e tempdb não serão os IDs de banco de dados 1 e 2.

A função de formato de tipo de data TO_CHAR é compatível com as seguintes limitações:

Não há suporte para meridiano de caractere único.

O formato “yyy” no SQL Server retorna 4 dígitos para anos acima de 1.000, mas apenas 3 dígitos para outros.

Não há suporte para os formatos “g” e “R”

A tradução local “vi-VN” é um pouco diferente.

Identificadores com mais de 63 caracteres

O PostgreSQL oferece suporte a um máximo de 63 caracteres para identificadores. O Babelfish converte identificadores com mais de 63 caracteres em um nome que inclui um hash do nome original. Por exemplo, uma tabela criada como “AB(ABC1234567890123456789012345678901234567890123456789012345678901234567890” pode ser convertida para “ABC123456789012345678901234567890123456789012345678901234567890”.

Suporte para colunas IDENTITY

Colunas IDENTITY têm suporte para os tipos de dados tinyint, smallint, int, bigint. numeric e decimal.

O SQL Server oferece suporte à precisão de 38 casas para tipos de dados numeric e decimal em colunas IDENTITY.

O PostgreSQL oferece suporte à precisão de 19 casas para tipos de dados numeric e decimal em colunas IDENTITY.

Índices com IGNORE_DUP_KEY

A sintaxe que cria um índice que inclui IGNORE_DUP_KEY cria um índice como se essa propriedade fosse omitida.

Índices com mais de 32 colunas

Um índice não pode incluir mais de 32 colunas. Colunas de índice incluídas contam para o máximo no PostgreSQL, mas não no SQL Server.

Índices (clusterizados)

Índices clusterizados são criados como se NONCLUSTERED tivesse sido especificada.

Cláusulas de índice

As cláusulas a seguir são ignoradas: FILLFACTOR, ALLOW_PAGE_LOCKS, ALLOW_ROW_LOCKS, PAD_INDEX, STATISTICS_NORECOMPUTE, OPTIMIZE_FOR_SEQUENTIAL_KEY, SORT_IN_TEMPDB, DROP_EXISTING, ONLINE, COMPRESSION_DELAY, MAXDOP e DATA_COMPRESSION

Suporte para JSON

A ordem dos pares nome-valor não é garantida. Mas o tipo de matriz permanece inalterado.

Objetos LOGIN

Todas as opções para objetos LOGIN são compatíveis, exceto: PASSWORD, DEFAULT_DATABASE, ENABLE, DISABLE.

Função NEWSEQUENTIALID

Implementada como NEWID; o comportamento sequencial não é garantido. Ao chamar NEWSEQUENTIALID, o PostgreSQL gera um novo valor de GUID.

A cláusula OUTPUT tem suporte com as seguintes limitações

OUTPUT e OUTPUT INTO não têm suporte na mesma consulta DML. Não há suporte para referências à tabela não alvo de operações UPDATE ou DELETE em uma cláusula OUTPUT. OUTPUT... DELETED *, INSERTED * não têm suporte na mesma consulta.

Limite de parâmetros de função ou procedimento

O Babelfish oferece suporte a um máximo de 100 parâmetros para um procedimento ou uma função.

ROWGUIDCOL

Essa cláusula é ignorada no momento. Consultas que fazem referência a $GUIDGOL causam um erro de sintaxe.

Suporte para objetos SEQUENCE

Objetos SEQUENCE têm suporte para tipos de dados tinyint, smallint, int, bigint, numeric e decimal.

O Aurora PostgreSQL oferece suporte à precisão de 19 casas para tipos de dados numéricos e decimais em um objeto SEQUENCE.

Funções no nível do servidor

A função no nível do servidor sysadmin é compatível. Outras funções no nível do servidor (exceto sysadmin) não são compatíveis.

Funções em nível de banco de dados diferentes de db_owner

As funções de db_owner por banco de dados e as funções por banco de dados definidas pelo usuário são compatíveis. Outras funções no nível do banco de dados (exceto db_owner) não são compatíveis.

Palavra-chave SQL SPARSE

A palavra-chave SPARSE é aceita e ignorada.

Cláusula de palavra-chave SQL ON filegroup

Essa cláusula é ignorada no momento.

Palavras-chave SQL CLUSTERED e NONCLUSTERED para índices e restrições

O Babelfish aceita e ignora as palavras-chave CLUSTERED e NONCLUSTERED.

sysdatabases.cmptlevel

sysdatabases.cmptlevel sempre é definido como 120.

tempdb não é reinicializado na reinicialização

Objetos permanentes (como tabelas e procedimentos) criados em tempdb não são removidos quando o banco de dados é reiniciado.

TEXTIMAGE_ON filegroup

Babelfish ignora a cláusula TEXTIMAGE_ON filegroup.

Precisão do tempo

O Babelfish oferece suporte com precisão de 6 dígitos para segundos fracionários. Nenhum efeito adverso é antecipado com esse comportamento.

Níveis de isolamento de transações

READUNCOMMITTED é tratada da mesma forma que READCOMMITED.

Colunas calculadas virtuais (não persistentes)

Colunas calculadas virtuais são criadas como persistentes.

Sem cláusula SCHEMABINDING

Essa cláusula não tem suporte em funções, procedimentos, acionadores ou visualizações. O objeto é criado, mas como se WITH SCHEMABINDING tivesse sido especificada.