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
Babelfish imite le SQL comportement du flux de contrôle et de l'état des transactions dans la mesure du possible. Lorsque Babelfish rencontre une erreur, il renvoie un code d'erreur similaire au code d'erreur du SQL serveur. Si Babelfish ne parvient pas à associer l'erreur à un code SQL serveur, 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 qui sont à l'origine des codes de SQL serveur 8143
et auxquels 8144
ils sont tous deux mappés8143
.
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 du serveur ou la @@PGERROR
fonction pour renvoyer un code d'SQLerreur Postgre. Vous pouvez également utiliser la fonction fn_mapped_system_error_list
pour renvoyer une liste de codes d'erreur mappés. Pour plus d'informations sur les codes SQL d'erreur Postgre, consultez le site Web de Postgre SQL
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 d'échappement 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
'
est l'identifiant d'une ou de plusieurs trappes d'échappement.hatch_name
hatch_name
peut utiliser des SQL caractères génériques, 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 hachures peut inclure SQL des caractères génériques. Par exemple, ce qui suit définit toutes les trappes d'échappement syntaxiques sur 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 d'CHECKPOINTune instruction dans le code procédural, mais l'CHECKPOINTinstruction 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 |
Contrôle le comportement de Babelfish lié aux options suivantes sur CREATE DATABASE :CONTAINMENT, DB_ CHAININGTRUSTWORTHY, PERSISTENT _ _. LOG BUFFER |
ignore |
escape_hatch_for_replication |
Contrôle le comportement de Babelfish lié à la FOR REPLICATION clause [NOT] lors de la création ou de la modification d'une table. |
strict |
escape_hatch_fulltext |
Contrôle le comportement de Babelfish lié aux FULLTEXT fonctionnalités, telles que DEFAULT _ FULLTEXT _ LANGUAGE dansCREATE/ALTERDATABASECREATEFULLTEXTINDEX, ou sp_fulltext_database. |
ignore |
escape_hatch_ignore_dup_key |
Contrôle le comportement de Babelfish lié àCREATE/ALTERTABLEet. CREATE INDEX Lorsque IGNORE _ DUP _ KEY =ON, génère une erreur lorsqu'il est défini sur |
strict |
escape_hatch_index_clustering |
Contrôle le comportement de Babelfish en ce qui concerne les NONCLUSTERED mots clés CLUSTERED ou pour les index et/ou les PRIMARY KEY contraintes. UNIQUE Lorsqu'il CLUSTERED est ignoré, l'index ou la contrainte est toujours créé comme s'il NONCLUSTERED avait été spécifié. |
ignore |
escape_hatch_index_columnstore |
Contrôle le comportement de Babelfish lié à la COLUMNSTORE clause. Si vous spécifiez |
strict |
escape_hatch_join_hints |
Contrôle le comportement des mots clés dans un JOIN opérateur : LOOPHASH,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 les messages |
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 |
Contrôle le comportement de Babelfish lié à la NOCHECK clause WITH CHECK or pour les contraintes. |
strict |
escape_hatch_nocheck_existing_constraint |
Contrôle le comportement de Babelfish lié à FOREIGN KEY ou CHECK aux contraintes. |
strict |
escape_hatch_query_hints |
Détermine le comportement de Babelfish pour les indicateurs de requête. Lorsque cette option est définie sur ignorer, le serveur ignore les indications qui utilisent la clause OPTION (...) pour spécifier les aspects du traitement des requêtes. Les exemples incluent SELECTFROM... OPTION(MERGEJOINHASH, MAXRECURSION 10). |
ignore |
escape_hatch_rowversion |
Contrôle le comportement des TIMESTAMP types de données ROWVERSION et. Pour plus d'informations, consultez Utilisation des fonctionnalités Babelfish dont la mise en œuvre est limitée. |
strict |
escape_hatch_schemabinding_function |
Contrôle le comportement de Babelfish lié à la WITH SCHEMABINDING clause. Par défaut, la WITH SCHEMABINDING clause est ignorée lorsqu'elle est spécifiée à l'aide de la ALTER FUNCTION commande CREATE or. |
ignore |
escape_hatch_schemabinding_procedure |
Contrôle le comportement de Babelfish lié à la WITH SCHEMABINDING clause. Par défaut, la WITH SCHEMABINDING clause est ignorée lorsqu'elle est spécifiée à l'aide de la ALTER PROCEDURE commande CREATE or. |
ignore |
escape_hatch_rowguidcol_column |
Contrôle le comportement de Babelfish lié à la ROWGUIDCOL clause lors de la création ou de la modification d'une table. |
strict |
escape_hatch_schemabinding_trigger |
Contrôle le comportement de Babelfish lié à la WITH SCHEMABINDING clause. Par défaut, la WITH SCHEMABINDING clause est ignorée lorsqu'elle est spécifiée à l'aide de la ALTER TRIGGER commande CREATE or. |
ignore |
escape_hatch_schemabinding_view |
Contrôle le comportement de Babelfish lié à la WITH SCHEMABINDING clause. Par défaut, la WITH SCHEMABINDING clause est ignorée lorsqu'elle est spécifiée à l'aide de la ALTER VIEW commande CREATE or. |
ignore |
escape_hatch_session_settings |
Contrôle le comportement de Babelfish vis-à-vis des instructions non prises en charge au niveau de la session. SET |
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 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 d'évacuation sur toute option de stockage utilisée dansCREATE,, ALTER DATABASETABLE,INDEX. Cela inclut les clauses (LOG) ON, TEXTIMAGE _ON, FILESTREAM _ON qui définissent les emplacements de stockage (partitions, groupes de fichiers) pour les tables, les index et les contraintes, ainsi que pour une base de données. Ce paramètre de trappe d'évacuation 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 |
Contrôle le comportement des indications de table spécifiées à l'aide de la clause WITH (...). |
ignore |
escape_hatch_unique_constraint |
Lorsqu'il est défini sur strict, une différence sémantique obscure entre SQL Server et Postgre SQL dans le traitement des NULL valeurs sur les colonnes indexées peut générer 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. Obsolète à partir des versions suivantes : 3.6.0 et versions supérieures, 4.2.0 et versions supérieures |
strict |