Gestion du traitement des erreurs Babelfish avec des trappes de secours - 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.

Gestion du traitement des erreurs Babelfish avec des trappes de secours

Dans la mesure du possible, Babelfish imite le comportement de SQL en ce qui concerne le flux de contrôle et l'état de transaction. Lorsque Babelfish rencontre une erreur, il renvoie un code d'erreur semblable au code d'erreur SQL Server. Si Babelfish ne peut pas mapper l'erreur à un code SQL Server, il renvoie un code d'erreur fixe (33557097) et prend des mesures spécifiques en fonction du type d'erreur, comme suit :

  • Pour les erreurs de compilation, Babelfish annule la transaction.

  • Pour les erreurs d'exécution, Babelfish termine le lot et annule la transaction.

  • Pour une erreur de protocole entre le client et le serveur, la transaction n'est pas annulée.

Si un code d'erreur ne peut pas être mappé à un code équivalent et que le code d'une erreur similaire est disponible, il est mappé au code alternatif. Par exemple, les comportements à l'origine des codes SQL Server 8143 et 8144sont tous deux mappés au code 8143.

Les erreurs qui ne peuvent pas être mappées ne respectent pas une construction TRY... CATCH.

Vous pouvez utiliser @@ERROR pour renvoyer un code d'erreur SQL Server, ou la fonction @@PGERROR pour renvoyer un code d'erreur PostgreSQL. Vous pouvez également utiliser la fonction fn_mapped_system_error_list pour renvoyer une liste de codes d'erreur mappés. Pour en savoir plus sur les codes d'erreur PostgreSQL, consultez le site Internet PostgreSQL.

Modification des paramètres de la trappe de secours de Babelfish

Pour gérer les déclarations susceptibles d'échouer, Babelfish définit certaines options appelées trappes de secours. Une trappe de secours est une option qui spécifie le comportement de Babelfish lorsqu'il rencontre une fonction ou une syntaxe non prise en charge.

Vous pouvez utiliser la procédure stockée sp_babelfish_configure pour contrôler les paramètres d'une trappe de secours. Utilisez le script pour définir la trappe de secours sur ignore ou strict. Si elle est définie sur strict, Babelfish renvoie une erreur que vous devez corriger avant de continuer.

Pour appliquer les changements à la session en cours et au niveau du cluster, incluez le mot-clé server.

Procédez comme suit :

  • Pour répertorier toutes les trappes de secours et leur statut, ainsi que des informations relatives à leur utilisation, exécutez sp_babelfish_configure.

  • Pour répertorier les trappes de secours nommées et leurs valeurs, pour la session en cours ou à l'échelle du cluster, exécutez la commande sp_babelfish_configure 'hatch_name'hatch_name correspond à l'identifiant d'une ou de plusieurs trappes de secours. Le nom d'une trappes de secours (hatch_name) peut utiliser des caractères génériques SQL, tels que « % ».

  • Pour définir une ou plusieurs trappes de secours sur la valeur spécifiée, exécutez sp_babelfish_configure ['hatch_name' [, 'strict'|'ignore' [, 'server']]. Pour rendre les paramètres permanents à l'échelle d'un cluster, ajoutez le mot-clé server, comme indiqué ci-après :

    EXECUTE sp_babelfish_configure 'escape_hatch_unique_constraint', 'ignore', 'server'

    Pour les appliquer à la session en cours uniquement, n'utilisez pas server.

  • Pour remettre toutes les trappes de secours à leur valeur par défaut, lancez sp_babelfish_configure 'default' (Babelfish 1.2.0 et versions ultérieures).

La chaîne identifiant la (ou les) trappe(s) peut inclure des caractères génériques SQL. L'exemple suivant définit toutes les trappes de secours syntaxiques à ignorer (ignore) pour le cluster Aurora PostgreSQL

EXECUTE sp_babelfish_configure '%', 'ignore', 'server'

Dans le tableau suivant, vous trouverez les descriptions et les valeurs par défaut des trappes de secours prédéfinies par Babelfish.

Trappe de secours Description Par défaut
escape_hatch_checkpoint

Autorise l'utilisation de l'instruction CHECKPOINT dans le code procédural, mais l'instruction CHECKPOINT n'est actuellement pas implémentée.

ignore

escape_hatch_constraint_name_for_default

Détermine le comportement de Babelfish pour les noms de contraintes par défaut.

ignore

escape_hatch_database_misc_options

Détermine le comportement de Babelfish pour les options suivantes sur CREATE ou ALTER DATABASE : CONTAINMENT, DB_CHAINING, TRUSTWORTHY, PERSISTENT_LOG_BUFFER.

ignore

escape_hatch_for_replication

Détermine le comportement de Babelfish pour la clause [NOT] FOR REPLICATION lors de la création ou de la modification d'une table.

strict

escape_hatch_fulltext

Détermine le comportement de Babelfish pour les fonctions FULLTEXT telles que DEFAULT_FULLTEXT_LANGUAGE dans CREATE/ALTER DATABASE, CREATE FULLTEXT INDEX ou sp_fulltext_database.

ignore

escape_hatch_ignore_dup_key

Contrôle le comportement de Babelfish lié à CREATE/ALTER TABLE et CREATE INDEX. Lorsque la valeur IGNORE_DUP_KEY=ON, provoque une erreur lorsqu'elle est définie sur strict (la valeur par défaut) ou ignore l'erreur lorsqu'elle est définie sur ignore (Babelfish version 1.2.0 et ultérieures).

strict

escape_hatch_index_clustering

Détermine le comportement de Babelfish pour les mots-clés CLUSTERED ou NONCLUSTERED liés aux index et aux contraintes PRIMARY KEY ou UNIQUE. Lorsque CLUSTERED est ignoré, l'index ou la contrainte est créé comme si NONCLUSTERED avait été spécifié.

ignore

escape_hatch_index_columnstore

Détermine le comportement de Babelfish pour la clause COLUMNSTORE. Si vous spécifiez ignore, Babelfish crée un index B-Tree classique.

strict

escape_hatch_join_hints

Détermine le comportement des mots-clés dans un opérateur JOIN : LOOP, HASH, MERGE, REMOTE, REDUCE, REDISTRIBUTE, REPLICATE.

ignore

escape_hatch_language_non_english

Détermine le comportement de Babelfish pour les langues autres que l'anglais dans les messages affichés à l'écran. Babelfish ne prend actuellement en charge que us_english pour les messages affichés à l'écran. SET LANGUAGE peut utiliser une variable contenant le nom de la langue, de sorte que la langue définie ne peut être détectée qu'au moment de l'exécution.

strict

escape_hatch_login_hashed_password

En cas de définition sur ignore, l'erreur liée au mot-clé HASHED est supprimée pour CREATE LOGIN et ALTER LOGIN.

strict

escape_hatch_login_misc_options

En cas de définition sur ignore, l'erreur liée à des mots-clés autres que HASHED, MUST_CHANGE, OLD_PASSWORD et UNLOCK est supprimée pour CREATE LOGIN et ALTER LOGIN.

strict

escape_hatch_login_old_password

En cas de définition sur ignore, l'erreur liée au mot-clé OLD_PASSWORD est supprimée pour CREATE LOGIN et ALTER LOGIN.

strict

escape_hatch_login_password_must_change

En cas de définition sur ignore, l'erreur liée au mot-clé MUST_CHANGE est supprimée pour CREATE LOGIN et ALTER LOGIN.

strict

escape_hatch_login_password_unlock

En cas de définition sur ignore, l'erreur liée au mot-clé UNLOCK est supprimée pour CREATE LOGIN et ALTER LOGIN.

strict

escape_hatch_nocheck_add_constraint

Détermine le comportement de Babelfish pour la clause WITH CHECK ou NOCHECK liée aux contraintes.

strict

escape_hatch_nocheck_existing_constraint

Détermine le comportement de Babelfish pour les contraintes FOREIGN KEY ou CHECK.

strict

escape_hatch_query_hints

Détermine le comportement de Babelfish pour les indicateurs de requête. Lorsque cette option est définie sur ignore, le serveur ignore les indicateurs qui utilisent la clause OPTION (...) pour spécifier les aspects de traitement des requêtes. Les exemples incluent SELECT FROM ... OPTION(MERGE JOIN HASH, MAXRECURSION 10)).

ignore

escape_hatch_rowversion

Contrôle le comportement des types de données ROWVERSION et TIMESTAMP. Pour plus d'informations, consultez Utilisation des fonctionnalités Babelfish dont la mise en œuvre est limitée.

strict

escape_hatch_schemabinding_function

Détermine le comportement de Babelfish pour la clause WITH SCHEMABINDING. Par défaut, la clause WITH SCHEMABINDING est ignorée lorsqu'elle est spécifiée avec la commande CREATE ou ALTER FUNCTION.

ignore

escape_hatch_schemabinding_procedure

Détermine le comportement de Babelfish pour la clause WITH SCHEMABINDING. Par défaut, la clause WITH SCHEMABINDING est ignorée lorsqu'elle est spécifiée avec la commande CREATE ou ALTER PROCEDURE.

ignore

escape_hatch_rowguidcol_column

Détermine le comportement de Babelfish pour la clause ROWGUIDCOL lors de la création ou de la modification d'une table.

strict

escape_hatch_schemabinding_trigger

Détermine le comportement de Babelfish pour la clause WITH SCHEMABINDING. Par défaut, la clause WITH SCHEMABINDING est ignorée lorsqu'elle est spécifiée avec la commande CREATE ou ALTER TRIGGER.

ignore

escape_hatch_schemabinding_view

Détermine le comportement de Babelfish pour la clause WITH SCHEMABINDING. Par défaut, la clause WITH SCHEMABINDING est ignorée lorsqu'elle est spécifiée avec la commande CREATE ou ALTER VIEW.

ignore

escape_hatch_session_settings

Détermine le comportement de Babelfish à l'égard des instructions SET non prises en charge au niveau de la session.

ignore

escape_hatch_showplan_all

Contrôle le comportement de Babelfish lié à SET SHOWPLAN_ALL et SET STATISTICS PROFILE. Lorsqu'ils sont définis sur ignore (ignorer), ils se comportent comme SET BABELFISH_SHOWPLAN_ALL et SET BABELFISH_STATISTICS PROFILE ; lorsqu'ils sont définis sur strict, ils sont ignorés en silence.

strict

escape_hatch_storage_on_partition

Détermine le comportement de Babelfish pour la clause ON partition_scheme column lors de la définition du partitionnement. Babelfish n'implémente actuellement pas le partitionnement.

strict

escape_hatch_storage_options

Trappe de secours associée à une option de stockage utilisée dans CREATE, ALTER DATABASE, TABLE, INDEX. Cela inclut les clauses (LOG) ON, TEXTIMAGE_ON, FILESTREAM_ON qui définissent les emplacements de stockage (partitions, groupes de fichiers) des tables, index et contraintes, ainsi que d'une base de données. Ce paramètre de trappe de secours s'applique à toutes ces clauses (y compris ON [PRIMARY] et ON "DEFAULT"). Une exception s'applique lorsqu'une partition est spécifiée pour une table ou un index accompagné de ON partition_scheme (column).

ignore

escape_hatch_table_hints

Détermine le comportement des indicateurs de table spécifiés à l'aide de la clause WITH (...).

ignore

escape_hatch_unique_constraint

Lorsqu'elle est définie comme stricte, une obscure différence sémantique entre SQL Server et PostgreSQL dans le traitement des valeurs NULL sur les colonnes indexées peut entraîner des erreurs. La différence sémantique n'apparaît que dans des cas d'utilisation irréalistes. Vous pouvez donc définir cette trappe de secours sur « ignorer » pour ne pas afficher l'erreur.

strict