

# Diferenças do T-SQL no Babelfish
<a name="babelfish-compatibility.tsql.limitations"></a>

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 [Funcionalidades compatíveis no Babelfish por versão](babelfish-compatibility.supported-functionality-table.md). Para obter informações sobre recursos que atualmente não são compatíveis, consulte [Funcionalidades não compatíveis com o Babelfish](babelfish-compatibility.tsql.limitations-unsupported.md). 

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 [https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraPostgreSQLReleaseNotes/Welcome.html).


| 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](babelfish-compatibility.tsql.limitations-unsupported.md#babelfish-compatibility.tsql.limitations-unsupported-list4). | 
| 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.  | 
| AT TIME ZONE | Durante a transição do horário de verão (DST) para o horário padrão, o período sobreposto é exibido usando a diferença em relação ao horário padrão. Para esclarecer, considere o seguinte exemplo: <pre>SELECT CONVERT(DATETIME2(0), '2022-10-30T02:00:00', 126) AT TIME ZONE 'Central European Standard Time';<br />GO;<br />Result: 2022-10-30 02:00:00 +01:00</pre> | 
| 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:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/AuroraUserGuide/babelfish-compatibility.tsql.limitations.html) | 
| 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...` | 
| Constraint\_name | No SQL Server, os nomes das restrições devem ser exclusivos dentro do esquema ao qual a tabela pertence. No entanto, no Babelfish, isso se aplica somente às restrições PRIMARY KEY e UNIQUE. Outros tipos de restrição não estão sujeitos a essa restrição. | 
| 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 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.<br />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 tipo de data FORMAT é compatível com as limitações a seguir | Não há suporte para meridiano de caractere único.<br />O formato “yyy” no SQL Server retorna 4 dígitos para anos acima de 1.000, mas apenas 3 dígitos para outros.<br />Não há suporte para os formatos “g” e “R”<br />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.<br />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 incompatíveis, exceto: PASSWORD, DEFAULT\_DATABASE, DEFAULT\_LANGUAGE, ENABLE e 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.<br />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. | 