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 '
dovehatch_name
'
è l'identificatore di una o più vie di fuga.hatch_name
hatch_name
può utilizzare caratteri jolly SQL, ad esempio '%'.Per impostare una o più vie di fuga sul valore specificato, eseguire
sp_babelfish_configure ['
. Per rendere le impostazioni permanenti a livello di cluster, includi la parola chiavehatch_name
' [, 'strict'|'ignore' [, 'server']]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 |
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 |
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 |
strict |
escape_hatch_login_hashed_password |
Se ignorato, elimina l'errore per la parola chiave |
strict |
escape_hatch_login_misc_options |
Se ignorato, elimina l'errore per altre parole chiave oltre |
strict |
escape_hatch_login_old_password |
Se ignorato, elimina l'errore per la parola chiave |
strict |
escape_hatch_login_password_must_change |
Se ignorato, elimina l'errore per la parola chiave |
strict |
escape_hatch_login_password_unlock |
Se ignorato, elimina l'errore per la parola chiave |
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 |
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 |