Gestione degli errori di Babelfish con escape hatch - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione degli errori di Babelfish con escape hatch

Babelfish simula il comportamento SQL per flusso di controllo e stato della transazione quando possibile. Se Babelfish rileva un errore, restituisce un codice di errore simile al codice di errore di SQL Server. Se Babelfish non riesce a mappare l'errore a un codice SQL Server, restituisce un codice di errore fisso (33557097) ed esegue azioni specifiche in base al tipo di errore, come segue:

  • Per errori in fase di compilazione, Babelfish esegue il rollback della transazione.

  • Per errori di runtime, Babelfish termina il batch ed esegue il rollback della transazione.

  • Per errore di protocollo tra client e server, non viene eseguito il rollback della transazione.

Se un codice di errore non può essere mappato a un codice equivalente e il codice per un errore simile è disponibile, il codice di errore viene mappato al codice alternativo. Ad esempio, i comportamenti che causano i codici SQL Server 8143 e 8144 sono entrambi mappati su 8143.

Gli errori che non possono essere mappati non rispettano un costrutto TRY... CATCH.

È possibile utilizzare @@ERROR per restituire un codice di errore di SQL Server oppure la funzione @@PGERROR per restituire un codice di errore PostgreSQL. È possibile utilizzare anche la funzione fn_mapped_system_error_list per restituire un elenco di codici di errore mappati. Per informazioni sui codici di errore PostgreSQL, consulta il sito web di https://www.postgresql.org/docs/current/errcodes-appendix.html.

Modifica delle impostazioni dell'escape hatch Babelfish

Per gestire meglio le istruzioni che potrebbero non andare a buon fine, Babelfish definisce alcune opzioni chiamate escape hatch. Una via di fuga è un'opzione che specifica il comportamento di Babelfish quando incontra una caratteristica o una sintassi non supportata.

Puoi utilizzare la procedura memorizzata sp_babelfish_configure per controllare le impostazioni di una via di fuga. Usa lo script per impostare la via di fuga su ignore o strict. Se è impostata su strict, Babelfish restituisce un errore che è necessario correggere prima di continuare.

Includere la parola chiave server per applicare le modifiche alla sessione corrente e a livello di cluster.

L'utilizzo è il seguente:

  • Per elencare tutte le vie di fuga e il relativo stato, oltre alle informazioni sull'utilizzo, eseguire sp_babelfish_configure.

  • Per elencare i tratteggi escape denominati e i relativi valori, per la sessione corrente o in tutto il cluster, eseguire il comando sp_babelfish_configure 'hatch_name' dove hatch_name è l'identificatore di una o più vie di fuga. hatch_name può utilizzare caratteri jolly SQL, ad esempio '%'.

  • Per impostare una o più vie di fuga sul valore specificato, eseguire sp_babelfish_configure ['hatch_name' [, 'strict'|'ignore' [, 'server']]. Per rendere le impostazioni permanenti a livello di cluster, includi la parola chiave server, come nell'esempio seguente:

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

    Per impostarle solo per la sessione corrente, non utilizzare server.

  • Per ripristinare tutti gli escape hatch ai valori predefiniti, esegui sp_babelfish_configure 'default' (Babelfish 1.2.0 e versioni successive).

La stringa che identifica il tratteggio (o i tratteggi) può includere caratteri jolly SQL. Ad esempio, il seguente imposta tutte le trattezze di escape sintassi su ignore per il cluster Aurora PostgreSQL.

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

Nella tabella seguente è possibile trovare descrizioni e valori predefiniti per gli escape hatch predefiniti di Babelfish.

Via di fuga Descrizione Default
escape_hatch_checkpoint

Consente l'uso dell'istruzione CHECKPOINT nel codice procedurale, ma l'istruzione CHECKPOINT non è attualmente implementata.

ignora

escape_hatch_constraint_name_for_default

Controlla il comportamento di Babelfish correlato ai nomi dei vincoli predefiniti.

ignora

escape_hatch_database_misc_options

Controlla il comportamento di Babelfish correlato alle seguenti opzioni su CREATE o ALTER DATABASE: CONTAINMENT, DB_CHAINING, TRUSTWORTHY, PERSISTENT_LOG_BUFFER.

ignora

escape_hatch_for_replication

Controlla il comportamento di Babelfish correlato alla clausola [NOT] FOR REPLICATION durante la creazione o la modifica di una tabella.

strict

escape_hatch_fulltext

Controlla il comportamento di Babelfish correlato alle funzionalità FULLTEXT, ad esempio DEFAULT_FULLTEXT_LANGUAGE in CREATE/ALTER DATABASE, CREATE FULLTEXT INDEX o sp_fulltext_database.

ignora

escape_hatch_ignore_dup_key

Controlla il comportamento di Babelfish relativo a CREATE/ALTER TABLE e CREATE INDEX. Quando IGNORE_DUP_KEY=ON, genera un errore quando impostato su strict (impostazione predefinita) o ignora l'errore quando impostato su ignore (Babelfish 1.2.0 e versioni successive).

strict

escape_hatch_index_clustering

Controlla il comportamento di Babelfish correlato alle parole chiave CLUSTERED o NONCLUSTERED per indici e vincoli PRIMARY KEY o UNIQUE. Quando CLUSTERED viene ignorato, l'indice o il vincolo viene ancora creato come se fosse stato specificato NON CLUSTERED.

ignora

escape_hatch_index_columnstore

Controlla il comportamento di Babelfish relativo alla clausola COLUMNSTORE. Se si specifica ignore, Babelfish crea un normale indice B-tree.

strict

escape_hatch_join_hints

Controlla il comportamento delle parole chiave in un operatore JOIN: LOOP, HASH, MERGE, REMOTE, REDUCE, REDISTRIBUITE, REPLICATE.

ignora

escape_hatch_language_non_english

Controlla il comportamento di Babelfish relativo a lingue diverse dall'inglese per i messaggi sullo schermo. Al momento, Babelfish supporta solo us_english per messaggi sullo schermo. SET LANGUAGE potrebbe utilizzare una variabile contenente il nome della lingua, quindi la lingua effettiva impostata può essere rilevata solo in fase di esecuzione.

strict

escape_hatch_login_hashed_password

Se ignorato, elimina l'errore per la parola chiave HASHED per CREATE LOGIN e ALTER LOGIN.

strict

escape_hatch_login_misc_options

Se ignorato, elimina l'errore per altre parole chiave oltre HASHED, MUST_CHANGE, OLD_PASSWORD, e UNLOCK per CREATE LOGIN and ALTER LOGIN.

strict

escape_hatch_login_old_password

Se ignorato, elimina l'errore per la parola chiave OLD_PASSWORD per CREATE LOGIN e ALTER LOGIN.

strict

escape_hatch_login_password_must_change

Se ignorato, elimina l'errore per la parola chiave MUST_CHANGE per CREATE LOGIN e ALTER LOGIN.

strict

escape_hatch_login_password_unlock

Se ignorato, elimina l'errore per la parola chiave UNLOCK per CREATE LOGIN e ALTER LOGIN.

strict

escape_hatch_nocheck_add_constraint

Controlla il comportamento di Babelfish relativo alla clausola WITH CHECK o NOCHECK per i vincoli.

strict

escape_hatch_nocheck_existing_constraint

Controlla il comportamento di Babelfish correlato ai vincoli FOREIGN KEY o CHECK.

strict

escape_hatch_query_hints

Controlla il comportamento di Babelfish correlato ai suggerimenti sulle query. Quando questa opzione è impostata per ignorare, il server ignora i suggerimenti che utilizzano la clausola OPTION (...) per specificare gli aspetti di elaborazione delle query. Esempi includono SELECT FROM... OPZIONE (MERGE JOIN HASH, MAXRECURSION 10)).

ignora

escape_hatch_rowversion

Controlla il comportamento dei tipi di dati ROWVERSION e TIMESTAMP. Per informazioni sull'utilizzo, consulta Utilizzo di funzionalità Babelfish con implementazione limitata.

strict

escape_hatch_schemabinding_function

Controlla il comportamento di Babelfish relativo alla clausola WITH SCHEMABINDING. Per impostazione predefinita, la clausola WITH SCHEMABINDING viene ignorata quando specificata con il comando CREATE o ALTER FUNCTION.

ignora

escape_hatch_schemabinding_procedure

Controlla il comportamento di Babelfish relativo alla clausola WITH SCHEMABINDING. Per impostazione predefinita, la clausola WITH SCHEMABINDING viene ignorata quando specificata con il comando CREATE o ALTER PROCEDURE.

ignora

escape_hatch_rowguidcol_column

Controlla il comportamento di Babelfish correlato alla clausola ROWGUIDCOL durante la creazione o la modifica di una tabella.

strict

escape_hatch_schemabinding_trigger

Controlla il comportamento di Babelfish relativo alla clausola WITH SCHEMABINDING. Per impostazione predefinita, la clausola WITH SCHEMABINDING viene ignorata quando specificata con il comando CREATE o ALTER TRIGGER.

ignora

escape_hatch_schemabinding_view

Controlla il comportamento di Babelfish relativo alla clausola WITH SCHEMABINDING. Per impostazione predefinita, la clausola WITH SCHEMABINDING viene ignorata quando specificata con il comando CREATE o ALTER VIEW.

ignora

escape_hatch_session_settings

Controlla il comportamento di Babelfish verso affermazioni SET a livello di sessione non supportate.

ignora

escape_hatch_showplan_all

Controlla il comportamento di Babelfish relativo a SET SHOWPLAN_ALL e SET STATISTICS PROFILE. Se impostati su "ignore", si comportano come SET BABELFISH_SHOWPLAN_ALL e SET BABELFISH_STATISTICS PROFILE, se impostati su "strict", vengono ignorati silenziosamente.

strict

escape_hatch_storage_on_partition

Controlla il comportamento di Babelfish correlato alla clausola ON partition_scheme column durante la definizione del partizionamento. Babelfish attualmente non implementa il partizionamento.

strict

escape_hatch_storage_options

Via di fuga su qualsiasi opzione di archiviazione utilizzata in CREATE, ALTER DATABASE, TABLE, INDEX. Sono incluse le clausole (LOG) ON, TEXTIMAGE_ON, FILESTREAM_ON che definiscono le posizioni di archiviazione (partizioni, gruppi di file) per tabelle, indici e vincoli e anche per un database. Questa impostazione di escape hatch si applica a tutte queste clausole (inclusi ON [PRIMARY] e ON “DEFAULT”). L'eccezione è quando viene specificata una partizione per una tabella o un indice con ON partition_scheme (colonna).

ignora

escape_hatch_table_hints

Controlla il comportamento dei suggerimenti di tabella specificati utilizzando la clausola WITH (...).

ignora

escape_hatch_unique_constraint

Se impostato su strict, un'oscura differenza semantica tra SQL Server e PostgreSQL nella gestione dei valori NULL nelle colonne indicizzate può generare errori. La differenza semantica emerge solo in casi d'uso non realistici, quindi puoi impostare questo hatch di escape su "ignore" per evitare di vedere l'errore.

strict