Différences T-SQL dans Babelfish - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Différences T-SQL dans Babelfish

Vous trouverez ci-dessous un tableau des fonctionnalités T-SQL prises en charge par la version actuelle de Babelfish, ainsi que quelques notes sur les différences de comportement par rapport à SQL Server.

Pour plus d'informations sur le support dans les différentes versions, consultez Fonctionnalités prises en charge dans Babelfish par version. Pour plus d'informations sur les fonctionnalités qui ne sont actuellement pas prises en charge, consultez Fonctionnalités non prises en charge dans Babelfish.

Babelfish est disponible avec Aurora PostgreSQL-Compatible Edition. Pour obtenir plus d'informations sur les mises à jour de Babelfish, consultez les Release Notes for Aurora PostgreSQL (Notes de mise à jour de Aurora PostgreSQL).

Fonctionnalité ou syntaxe Description du comportement ou de la différence
\ (caractère de continuation de ligne) Le caractère de continuation de ligne (une barre oblique inverse avant une nouvelle ligne) pour les chaînes de caractères et les chaînes hexadécimales n'est pour le moment pas pris en charge. Pour les chaînes de caractères, le signe backslash-newline est interprété comme des caractères dans la chaîne. Pour les chaînes hexadécimales, le signe backslash-newline entraîne une erreur de syntaxe.

@@version

Le format de la valeur renvoyée par @@version est légèrement différent de celui de la valeur renvoyée par SQL Server. Votre code peut ne pas fonctionner correctement s'il repose sur le format de @@version.

Fonctions d’agrégation

Les fonctions d'agrégation sont partiellement prises en charge (les fonctions AVG, COUNT, COUNT_BIG, GROUPING, MAX, MIN, STRING_AGG et SUM sont prises en charge). Pour obtenir une liste des fonctions d'agrégation non prises en charge, consultez Fonctions non prises en charge

ALTER TABLE

Prend en charge l'ajout ou la suppression d'une seule colonne ou d'une seule contrainte.

ALTER TABLE..ALTER COLUMN

Les valeurs NULL et NOT NULL ne peuvent pas être spécifiées actuellement. Pour modifier la valeur NULL d'une colonne, utilisez l'instruction postgreSQL ALTER TABLE..{SET|DROP} NOT NULL.

AT TIME ZONE

Pendant le passage de l'heure d'été (DST) à l'heure standard, la période de chevauchement est affichée en utilisant le décalage horaire standard. Pour clarifier les choses, considérez l'exemple suivant :

SELECT CONVERT(DATETIME2(0), '2022-10-30T02:00:00', 126) AT TIME ZONE 'Central European Standard Time'; GO; Result: 2022-10-30 02:00:00 +01:00

Noms de colonnes vides sans alias de colonne

Les utilitaires sqlcmd et psql traitent différemment les colonnes dont le nom est vide :

  • SQL Server sqlcmd renvoie un nom de colonne vide.

  • PostgreSQL psql renvoie un nom de colonne généré.

Fonction CHECKSUM

Babelfish et SQL Server utilisent des algorithmes de hachage différents pour la fonction CHECKSUM. Par conséquent, les valeurs de hachage générées par la fonction CHECKSUM dans Babelfish peuvent être différentes de celles générées par la fonction CHECKSUM dans SQL Server.

Colonne par défaut

Lors de la création d'une colonne par défaut, le nom de la contrainte est ignoré. Pour supprimer une colonne par défaut, utilisez la syntaxe suivante : ALTER TABLE...ALTER COLUMN..DROP DEFAULT...

Nom_contrainte

Dans SQL Server, les noms de contrainte doivent être uniques dans le schéma auquel appartient la table. Cependant, dans Babelfish, cela ne s'applique qu'aux contraintes PRIMARY KEY et UNIQUE. Les autres types de contraintes ne sont pas soumis à cette restriction.

Constraints

PostgreSQL ne prend pas en charge l'activation et la désactivation des contraintes individuelles. L'instruction est ignorée et un avertissement est émis.

Contraintes avec IGNORE_DUP_KEY

Les contraintes sont créées sans cette propriété.

CREATE, ALTER, DROP SERVER ROLE

ALTER SERVER ROLE est uniquement pris en charge pour sysadmin. Aucune autre syntaxe n'est prise en charge.

L'utilisateur T-SQL de Babelfish a une expérience similaire à celle de SQL Server pour les concepts d'identifiant (principal du serveur), de base de données et d'utilisateur de base de données (principal de la base de données).

Les clauses CREATE, ALTER LOGIN sont prises en charge avec une syntaxe limitée.

La clause CREATE LOGIN... PASSWORD, la clause ...DEFAULT_DATABASE et la clause ...DEFAULT_LANGUAGE sont prises en charge. La clause ALTER LOGIN... PASSWORD est prise en charge, mais pas la clause ALTER LOGIN... OLD_PASSWORD. Seul un identifiant correspondant à un membre sysadmin peut modifier un mot de passe.

CREATE DATABASE – Classement sensible à la casse

Les classements sensibles à la casse ne sont pas pris en charge par l'instruction CREATE DATABASE.

Mots-clés et clauses CREATE DATABASE

Les options autres que COLLATE et CONTAINMENT=NONE ne sont pas prises en charge. La clause COLLATE est acceptée et est toujours définie sur la valeur babelfishpg_tsql.server_collation_name.

Clauses CREATE SCHEMA...

Vous pouvez utiliser la commande CREATE SCHEMA pour créer un schéma vide. Utilisez des commandes supplémentaires pour créer des objets de schéma.

Les valeurs d'ID de base de données sont différentes sur Babelfish

Les bases de données master et tempdb ne seront pas les bases de données IDs 1 et 2.

La fonction de type de date FORMAT est prise en charge avec les limitations suivantes

Le méridien à caractère unique n'est pas pris en charge.

Le format « yyy » dans SQL Server renvoie 4 chiffres pour les années supérieures à 1 000, mais seulement 3 chiffres pour les autres.

Les formats « g » et « R » ne sont pas pris en charge

La traduction locale « vi-VN » est légèrement différente.

Identifiants dépassant 63 caractères

PostgreSQL prend en charge un maximum de 63 caractères pour les identifiants. Babelfish convertit les identifiants de plus de 63 caractères en un nom qui inclut un hachage du nom d'origine. Par exemple, une table créée sous le nom « AB (ABC1234567890123456789012345678901234567890123456789012345678901234567890) » peut être convertie en « 012345678901234567890123456789012345678901234567890 ». ABC123456789

Prise en charge des colonnes IDENTITY

Les colonnes IDENTITY sont prises en charge pour les types de données tinyint, smallint, int, bigint. numeric et decimal.

SQL Server prend en charge une précision allant jusqu'à 38 positions pour les types de données numeric et decimal dans les colonnes IDENTITY.

PostgreSQL prend en charge une précision allant jusqu'à 19 positions pour les types de données numeric et decimal dans les colonnes IDENTITY.

Index avec IGNORE_DUP_KEY

La syntaxe qui crée un index incluant IGNORE_DUP_KEY crée un index comme si cette propriété était omise.

Index comportant plus de 32 colonnes

Un index ne peut pas comporter plus de 32 colonnes. Les colonnes d'index incluses comptent pour le maximum dans PostgreSQL, mais pas dans SQL Server.

Index (en cluster)

Les index en cluster sont créés comme si NONCLUSTERED était spécifié.

Clauses d'index

Les clauses suivantes sont ignorées : FILLFACTOR, ALLOW_PAGE_LOCKS, ALLOW_ROW_LOCKS, PAD_INDEX, STATISTICS_NORECOMPUTE, OPTIMIZE_FOR_SEQUENTIAL_KEY, SORT_IN_TEMPDB, DROP_EXISTING, ONLINE, COMPRESSION_DELAY, MAXDOP et DATA_COMPRESSION

Prise en charge JSON

L'ordre des paires nom-valeur n'est pas garanti. Mais le type de table n'est pas affecté.

Objets LOGIN

Toutes les options des objets LOGIN ne sont pas prises en charge, à l'exception de PASSWORD, DEFAULT_DATABASE, DEFAULT_LANGUAGE, ENABLE, DISABLE.

Fonction NEWSSEQUENTIALID

Implémenté en tant que NEWID ; le comportement séquentiel n'est pas garanti. Lors de l'appel de NEWSEQUENTIALID, PostgreSQL génère une nouvelle valeur GUID.

La clause OUTPUT est prise en charge avec les limitations suivantes

OUTPUT et OUTPUT INTO ne sont pas pris en charge dans la même requête DML. Les références à des tables non ciblées par des opérations UPDATE ou DELETE dans une clause OUTPUT ne sont pas prises en charge. OUTPUT... DELETED *, INSERTED * ne sont pas pris en charge dans la même requête.

Limite de paramètres de procédure ou de fonction

Babelfish prend en charge un maximum de 100 paramètres pour une procédure ou une fonction.

ROWGUIDCOL

Cette clause est actuellement ignorée. Les requêtes faisant référence à $GUIDGOL provoquent une erreur de syntaxe.

Prise en charge des objets SEQUENCE

Les objets SEQUENCE sont pris en charge pour les types de données tinyint, smallint, int, bigint, numeric et decimal.

Aurora PostgreSQL prend en charge une précision allant jusqu'à 19 positions pour les types de données numeric et decimal contenus dans un objet SEQUENCE.

Rôles au niveau du serveur

Le rôle sysadmin au niveau du serveur est pris en charge. Les autres rôles au niveau du serveur (autres que sysadmin) ne sont pas pris en charge.

Rôles de niveau base de données autres que db_owner

Les rôles au niveau de la base de données db_owner et les rôles au niveau de la base de données définis par l'utilisateur sont pris en charge. Les autres rôles au niveau de la base de données (autres que db_owner) ne sont pas pris en charge.

Mot-clé SQL SPARSE

Le mot-clé SPARSE est accepté et ignoré.

Clause de mot-clé SQL ON filegroup

Cette clause est actuellement ignorée.

Mots-clés SQL CLUSTERED et NONCLUSTERED pour les index et les contraintes

Babelfish accepte et ignore les mots-clés CLUSTERED et NONCLUSTERED

sysdatabases.cmptlevel

sysdatabases.cmptlevel est toujours défini sur 120.

La base de données tempdb n'est pas réinitialisée au redémarrage

Les objets permanents (comme les tables et les procédures) créés dans tempdb ne sont pas supprimés au redémarrage de la base de données.

Groupe de fichiers TEXTIMAGE_ON

Babelfish ignore la clause filegroup TEXTIMAGE_ON.

Précision temporelle

Babelfish prend en charge une précision à 6 chiffres pour les fractions de seconde. Aucun effet indésirable n'est anticipé avec ce comportement.

Niveaux d'isolement des transactions

READUNCOMMITTED est traité de la même manière que READCOMMITTED.

Colonnes virtuelles calculées (non persistantes)

Les colonnes virtuelles calculées sont créées en tant que colonnes persistantes.

Sans la clause SCHEMABINDING

Cette clause n'est pas prise en charge dans les fonctions, procédures, déclencheurs ou vues. L'objet est créé, mais comme si WITH SCHEMABINDING avait été spécifié.