Utilizzo di funzionalità Babelfish con implementazione limitata - 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à.

Utilizzo di funzionalità Babelfish con implementazione limitata

Ogni nuova versione di Babelfish aggiunge il supporto per ulteriori funzionalità che si allineano meglio alle funzionalità e al comportamento di T-SQL. Tuttavia, ci sono alcune caratteristiche e differenze non supportate nell'implementazione corrente. Di seguito, puoi trovare informazioni sulle differenze funzionali tra Babelfish e T-SQL, con alcune soluzioni alternative o note di utilizzo.

A partire dalla versione 1.2.0 di Babelfish, le seguenti funzionalità attualmente presentano implementazioni limitate:

  • Cataloghi SQL Server (visualizzazioni di sistema) - I cataloghi sys.sysconfigures,sys.syscurconfigs e sys.configurationssupportano solo una singola configurazione di sola lettura. sp_configure non è attualmente supportato. Per ulteriori informazioni sulle altre viste di SQL Server implementate da Babelfish, consulta Recupero di informazioni dal catalogo di sistema Babelfish.

  • Autorizzazioni GRANT - GRANT...TO PUBLIC è supportato, ma GRANT..TO PUBLIC WITH GRANT OPTION non è attualmente supportato.

  • Limitazioni sulla catena di proprietà e sul meccanismo di autorizzazione di SQL Server - In Babelfish, la catena di proprietà di SQL Server funziona per le viste ma non per le stored procedure. Ciò significa che alle procedure deve essere concesso un accesso esplicito ad altri oggetti di proprietà dello stesso proprietario delle procedure chiamanti. In SQL Server, concedere al chiamante le autorizzazioni EXECUTE sulla procedura è sufficiente per invocare altri oggetti di proprietà dello stesso proprietario. In Babelfish, al chiamante devono inoltre essere concesse le autorizzazioni sugli oggetti a cui si accede dalla procedura.

  • Risoluzione di riferimenti agli oggetti non qualificati (senza nome dello schema) - Quando un oggetto SQL (procedura, vista, funzione o trigger) fa riferimento a un oggetto senza qualificarlo con un nome di schema, SQL Server risolve il nome dello schema dell'oggetto utilizzando il nome dello schema dell'oggetto SQL in cui si verifica il riferimento. Attualmente, Babelfish risolve questo problema in modo diverso, utilizzando lo schema predefinito dell'utente del database che esegue la procedura.

  • Modifiche di schema, sessioni e connessioni predefinite - Se gli utenti modificano lo schema predefinito conALTER USER...WITH DEFAULT SCHEMA , la modifica diventa immediatamente effettiva in quella sessione. Tuttavia, per altre sessioni attualmente connesse appartenenti allo stesso utente, la tempistica è diversa, come segue:

    • Per SQL Server: la modifica ha effetto su tutte le altre connessioni per questo utente immediatamente.

    • Per Babelfish: la modifica ha effetto solo per questo utente per le nuove connessioni.

  • Implementazione dei tipi di dati ROWVERSION e TIMESTAMP e impostazione di escape hatch - I tipi di dati ROWVERSION e TIMESTAMP sono ora supportati in Babelfish. Per utilizzare ROWVERSION o TIMESTAMP in Babelfish, è necessario modificare l'impostazione dell'escape hatch babelfishpg_tsql.escape_hatch_rowversion dal suo valore predefinito (strict) a ignore. L'implementazione Babelfish dei tipi di dati ROWVERSION e TIMESTAMP è per lo più semanticamente identica a quella di SQL Server, con le seguenti eccezioni:

    • La funzione @@DBTS integrata si comporta in modo simile a SQL Server, ma con piccole differenze. Invece di restituire l'ultimo valore utilizzato per SELECT @@DBTS, Babelfish genera un nuovo timestamp, a causa del motore di database PostgreSQL sottostante e della sua implementazione del controllo della concorrenza multiversione (MVCC).

    • In SQL Server, ogni riga inserita o aggiornata ottiene un valore ROWVERSION/TIMESTAMP univoco. In Babelfish, a ogni riga inserita aggiornata dalla stessa istruzione viene assegnato lo stesso valore ROWVERSION/TIMESTAMP.

      Ad esempio, quando un'istruzione UPDATE o un'istruzione INSERT-SELECT influisce su più righe, in SQL Server, le righe interessate hanno valori diversi nella colonna ROWVERSION/TIMESTAMP. In Babelfish (PostgreSQL), le righe hanno lo stesso valore.

    • In SQL Server, quando si crea una nuova tabella con SELECT-INTO, è possibile eseguire il cast di un valore esplicito (ad esempio NULL) in una colonna ROWVERSION/TIMESTAMP da creare. Quando fai la stessa cosa in Babelfish, viene assegnato un valore ROWVERSION/TIMESTAMP effettivo a ogni riga della nuova tabella.

    Queste differenze minori nei tipi di dati ROWVERSION/TIMESTAMP non dovrebbero avere un impatto negativo sulle applicazioni in esecuzione su Babelfish.

Creazione, proprietà e autorizzazioni dello schema - Le autorizzazioni per creare e accedere a oggetti in uno schema di proprietà di un utente non DBO (utilizzando CREATE SCHEMA schema name AUTHORIZATION user name) differiscono per gli utenti SQL Server e Babelfish non DBO, come illustrato nella seguente tabella:

L'utente del database (non DBO) proprietario dello schema può eseguire le seguenti operazioni: SQL Server Babelfish

Creare oggetti nello schema senza ulteriori autorizzazioni da parte del DBO?

No

Accedere a oggetti creati dal DBO nello schema senza ulteriori autorizzazioni?

No