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 8144
sont 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 '
oùhatch_name
'
correspond à l'identifiant d'une ou de plusieurs trappes de secours. Le nom d'une trappes de secours (hatch_name
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 ['
. Pour rendre les paramètres permanents à l'échelle d'un cluster, ajoutez le mot-cléhatch_name
' [, 'strict'|'ignore' [, 'server']]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 |
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 |
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 |
strict |
escape_hatch_login_hashed_password |
En cas de définition sur ignore, l'erreur liée au mot-clé |
strict |
escape_hatch_login_misc_options |
En cas de définition sur ignore, l'erreur liée à des mots-clés autres que |
strict |
escape_hatch_login_old_password |
En cas de définition sur ignore, l'erreur liée au mot-clé |
strict |
escape_hatch_login_password_must_change |
En cas de définition sur ignore, l'erreur liée au mot-clé |
strict |
escape_hatch_login_password_unlock |
En cas de définition sur ignore, l'erreur liée au mot-clé |
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 |
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 |