Esegui l'upgrade della versione principale del database in loco

Questa pagina descrive come eseguire l'upgrade della versione principale del database eseguendo l'upgrade dell'istanza Cloud SQL in loco anziché tramite la migrazione dei dati.

Introduzione

I fornitori di software di database rilasciano periodicamente nuove versioni principali che contengono nuove funzionalità e miglioramenti delle prestazioni e della sicurezza. Cloud SQL accetta nuove versioni dopo che vengono rilasciate. Quando Cloud SQL offre il supporto per una nuova versione principale, puoi eseguire l'upgrade delle istanze per mantenere aggiornato il database.

Puoi eseguire l'upgrade della versione del database di un'istanza in loco o eseguendo la migrazione dei dati. Gli upgrade in loco sono un modo più semplice per eseguire l'upgrade della versione principale dell'istanza. Non è necessario eseguire la migrazione dei dati o modificare le stringhe di connessione dell'applicazione. Con gli upgrade in loco, puoi mantenere il nome, l'indirizzo IP e altre impostazioni dell'istanza attuale dopo l'upgrade. Gli upgrade in loco non richiedono lo spostamento di file di dati e possono essere completati più rapidamente. In alcuni casi, il tempo di inattività è più breve di quanto comporta la migrazione dei dati.

L'operazione di upgrade in loco di Cloud SQL per SQL Server utilizza l'utilità di upgrade in loco di SQL Server.

Pianifica un upgrade della versione principale

  1. Scegli una versione principale di destinazione.

    gcloud

    Per informazioni sull'installazione e su come iniziare a utilizzare gcloud CLI, consulta Installare gcloud CLI. Per informazioni sull'avvio di Cloud Shell, consulta Utilizzare Cloud Shell.

    Per verificare le versioni del database che puoi scegliere come target per un upgrade in loco sull'istanza, segui questi passaggi:

    1. Esegui questo comando.
    2. gcloud sql instances describe INSTANCE_NAME
         

      Sostituisci INSTANCE_NAME con il nome dell'istanza.

    3. Nell'output del comando, individua la sezione con l'etichetta upgradableDatabaseVersions.
    4. Ogni sottosezione restituisce una versione del database disponibile per l'upgrade. In ogni sottosezione, esamina i seguenti campi.
      • majorVersion: la versione principale che puoi scegliere come target per l'upgrade in loco.
      • name: la stringa di versione del database che include la versione principale.
      • displayName: il nome visualizzato della versione del database.

    REST v1

    Per verificare quali versioni del database di destinazione sono disponibili per un upgrade in loco della versione principale, utilizza il metodo instances.get dell'API Cloud SQL Admin.

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • INSTANCE_NAME: il nome dell'istanza.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "SQLSERVER_2022_STANDARD"
      name: "SQLSERVER_2022_STANDARD"
      display_name: "SQL Server 2022 Standard"
    }
    
    

    REST v1beta4

    Per verificare quali versioni del database di destinazione sono disponibili per l'upgrade in loco della versione principale di un'istanza, utilizza il metodo instances.get dell'API Cloud SQL Admin.

    Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

    • INSTANCE_NAME: il nome dell'istanza.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    
    upgradableDatabaseVersions:
    
    {
      major_version: "SQLSERVER_2022_STANDARD"
      name: "SQLSERVER_2022_STANDARD"
      display_name: "SQL Server 2022 Standard"
    }
    
    

    Per l'elenco completo delle versioni del database supportate da Cloud SQL, consulta Versioni del database e criteri di versione.

  2. Considera le funzionalità offerte in ogni versione principale del database e risolvi le incompatibilità.

    Vedi le funzionalità sospese e le modifiche che provocano un errore di SQL Server.

    Le nuove versioni principali introducono modifiche incompatibili che potrebbero richiedere la modifica del codice dell'applicazione, dello schema o delle impostazioni del database. Prima di eseguire l'upgrade dell'istanza di database, esamina le note di rilascio della versione principale di destinazione per determinare le incompatibilità da risolvere.

  3. Testa l'upgrade con una prova.

    Esegui una prova del processo di upgrade end-to-end in un ambiente di test prima di eseguire l'upgrade del database di produzione. Puoi clonare la tua istanza per creare una copia identica dei dati su cui testare il processo di upgrade.

    Oltre a verificare che l'upgrade sia stato completato correttamente, esegui dei test per assicurarti che l'applicazione si comporti come previsto sul database di cui è stato eseguito l'upgrade.

  4. Decidi quando eseguire l'upgrade.

    L'upgrade richiede che l'istanza non sia disponibile per un determinato periodo di tempo. Pianifica l'upgrade in un periodo di tempo in cui l'attività del database è bassa.

Esegui l'upgrade della versione principale del database in loco

Quando avvii un'operazione di upgrade, Cloud SQL controlla innanzitutto la configurazione dell'istanza per garantire che sia compatibile per un upgrade. Dopo aver verificato la configurazione, Cloud SQL rende l'istanza non disponibile, esegue un backup prima dell'upgrade, esegue l'upgrade, rende disponibile l'istanza ed esegue un backup dopo l'upgrade.

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Modifica.
  4. Nella sezione Informazioni istanza, fai clic sul pulsante Esegui l'upgrade e conferma di voler andare alla pagina di upgrade.
  5. Nella pagina Scegli una versione del database, fai clic sull'elenco Versione del database per l'upgrade e seleziona una delle versioni principali del database disponibili.
  6. Fai clic su Continua.
  7. Nella casella ID istanza, inserisci il nome dell'istanza e fai clic sul pulsante Avvia upgrade.
Il completamento dell'operazione richiede diversi minuti.

Verifica che la versione principale del database di cui è stato eseguito l'upgrade venga visualizzata sotto il nome dell'istanza nella pagina Panoramica dell'istanza.

gcloud

  1. Avvia l'upgrade.

    Utilizza il comando gcloud sql instances patch con il flag --database-version.

    Prima di eseguire il comando, sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza.
    • DATABASE_VERSION: l'enumerazione della versione principale del database, che deve essere successiva alla versione corrente. Specifica una versione del database per una versione principale che sia disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questa enum come primo passaggio della procedura Pianifica per l'upgrade. Se hai bisogno di un elenco completo delle enumerazioni delle versioni del database, consulta SqlDatabaseEnums.
    gcloud sql instances patch INSTANCE_NAME \
    --database-version=DATABASE_VERSION
    

    Il completamento degli upgrade delle versioni principali richiede diversi minuti. Potresti visualizzare un messaggio che indica che l'operazione sta richiedendo più tempo del previsto. Puoi ignorare questo messaggio o eseguire il comando gcloud sql operations wait per ignorarlo.

  2. Ottieni il nome dell'operazione di upgrade.

    Utilizza il comando gcloud sql operations list con il flag --instance.

    Prima di eseguire il comando, sostituisci la variabile INSTANCE_NAME con il nome dell'istanza.

    gcloud sql operations list --instance=INSTANCE_NAME
    
  3. Monitora lo stato dell'upgrade.

    Utilizza il comando gcloud sql operations describe.

    Prima di eseguire il comando, sostituisci la variabile OPERATION con il nome dell'operazione di upgrade recuperato nel passaggio precedente.

    gcloud sql operations describe OPERATION
    

REST v1

  1. Avvia l'upgrade in loco.

    Utilizza una richiesta PATCH con il metodo instances:patch.

    Prima di utilizzare i dati della richiesta, sostituisci queste variabili:

    • PROJECT_ID: l'ID del progetto.
    • INSTANCE_NAME: il nome dell'istanza.

    Metodo HTTP e URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
    

    Corpo JSON della richiesta:

    {
      "databaseVersion": DATABASE_VERSION
    }
    

    Sostituisci DATABASE_VERSION con l'enumerazione della versione principale del database, che deve essere successiva alla versione attuale. Specifica una versione del database per una versione principale che sia disponibile come destinazione dell'upgrade per l'istanza. Puoi ottenere questa enum come primo passaggio della procedura Pianifica per l'upgrade. Se hai bisogno di un elenco completo delle enumerazioni delle versioni del database, consulta SqlDatabaseVersion.

  2. Ottieni il nome dell'operazione di upgrade.

    Utilizza una richiesta GET con il metodo operations.list dopo aver sostituito PROJECT_ID con l'ID del progetto.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations
    
  3. Monitora lo stato dell'upgrade.

    Utilizza una richiesta GET con il metodo operations.get dopo aver sostituito le seguenti variabili:

    • PROJECT_ID: l'ID del progetto.
    • OPERATION_NAME: il nome dell'operazione di upgrade recuperato nel passaggio precedente.

    Metodo HTTP e URL:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operation/OPERATION_NAME
    

Terraform

Per aggiornare la versione del database, utilizza una risorsa Terraform e il provider Terraform per Google Cloud, versione 4.34.0 o successive.

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

Applica le modifiche

Per applicare la tua configurazione Terraform a un progetto Google Cloud, completa i passaggi nelle sezioni seguenti.

Prepara Cloud Shell

  1. Avvia Cloud Shell.
  2. Imposta il progetto Google Cloud predefinito a cui vuoi applicare le configurazioni Terraform.

    Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.

Prepara la directory

Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo principale).

  1. In Cloud Shell, crea una directory e un nuovo file al suo interno. Il nome del file deve avere l'estensione .tf, ad esempio main.tf. In questo tutorial, il file è denominato main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se stai seguendo un tutorial, puoi copiare il codice campione in ogni sezione o passaggio.

    Copia il codice campione nel nuovo oggetto main.tf.

    Facoltativamente, copia il codice da GitHub. Questa opzione è consigliata se lo snippet Terraform fa parte di una soluzione end-to-end.

  3. Esamina e modifica i parametri di esempio da applicare al tuo ambiente.
  4. Salva le modifiche.
  5. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.
    terraform init

    Facoltativamente, per utilizzare la versione più recente del provider Google, includi l'opzione -upgrade:

    terraform init -upgrade

Applica le modifiche

  1. Esamina la configurazione e verifica che le risorse che Terraform creerà o aggiornerà soddisfino le tue aspettative:
    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  2. Applica la configurazione Terraform eseguendo questo comando e inserendo yes al prompt:
    terraform apply

    Attendi finché in Terraform non viene visualizzato il messaggio "Applicazione completata!".

  3. Apri il progetto Google Cloud per visualizzare i risultati. Nella console Google Cloud, vai alle risorse nella UI per assicurarti che Terraform le abbia create o aggiornate.

Elimina le modifiche

Per eliminare le modifiche:

  1. Per disabilitare la protezione dall'eliminazione, imposta l'argomento deletion_protection nel file di configurazione di Terraform su false.
    deletion_protection =  "false"
  2. Applica la configurazione Terraform aggiornata eseguendo questo comando e inserendo yes al prompt:
    terraform apply
  1. Per rimuovere le risorse applicate in precedenza con la tua configurazione Terraform, esegui questo comando e inserisci yes al prompt:

    terraform destroy

Quando effettui una richiesta di upgrade in loco, Cloud SQL esegue prima un controllo prima dell'upgrade. Se Cloud SQL determina che l'istanza non è pronta per un upgrade, la richiesta di upgrade non va a buon fine e viene visualizzato un messaggio che suggerisce come risolvere il problema. Vedi anche Risolvere i problemi relativi a un upgrade della versione principale.

Backup automatici degli upgrade

Quando esegui un upgrade della versione principale, Cloud SQL esegue automaticamente due backup on demand, denominati backup di upgrade:

  • Il primo backup dell'upgrade è il backup pre-upgrade, che viene eseguito immediatamente prima di iniziare l'upgrade. Puoi utilizzare questo backup per ripristinare lo stato dell'istanza di database nella versione precedente.
  • Il secondo backup dell'upgrade è il backup post-upgrade, che viene eseguito immediatamente dopo che le nuove scritture sono consentite per l'istanza del database di cui è stato eseguito l'upgrade.

Quando visualizzi l'elenco dei backup, i backup dell'upgrade sono elencati con il tipo On-demand. I backup dell'upgrade sono etichettati in modo da identificarli facilmente. Ad esempio, se esegui l'upgrade da SQL Server Enterprise 2017 a SQL Server Enterprise 2019, il tuo backup pre-upgrade è etichettato come Pre-upgrade backup, SQLSERVER_2017_ENTERPRISE to SQLSERVER_2019_ENTERPRISE. e il backup post-upgrade ha l'etichetta Post-upgrade backup, SQLSERVER_2019_ENTERPRISE from SQLSERVER_2017_ENTERPRISE.

Come per altri backup on demand, i backup di upgrade vengono mantenuti finché non li elimini o elimini l'istanza.

Esegui l'upgrade del livello di compatibilità del database

Il livello di compatibilità del database determina il comportamento del database rispetto all'applicazione che gestisce. L'impostazione del livello di compatibilità del database garantisce la compatibilità con le versioni precedenti con le versioni precedenti di SQL Server e riguarda le modifiche a Transact-SQL e Query Optimize. Quando viene eseguito l'upgrade di una versione di database di un'istanza SQL Server, i livelli di compatibilità dei database esistenti vengono conservati, in modo che l'applicazione possa continuare a funzionare sulla versione più recente di SQL Server. L'upgrade del livello di compatibilità consente di trarre vantaggio da nuove funzionalità, miglioramenti dell'elaborazione delle query e altre modifiche.

Dopo aver eseguito l'upgrade della versione del motore del database di un'istanza, quando l'applicazione gestita dal database è pronta, esegui l'upgrade del livello di compatibilità del database per ogni database nell'istanza. Se il livello di compatibilità viene impostato sulla versione più recente, viene eseguito l'upgrade dei database con le funzionalità più recenti e vengono migliorate le prestazioni.

Per eseguire l'upgrade del livello di compatibilità del database, segui questi passaggi:

  1. Identifica il livello di compatibilità attuale del tuo database.

    Ad esempio, per SQL Server 2017, il livello di compatibilità predefinito è 140. Per verificare il livello di compatibilità attuale per il tuo database, esegui questo comando in Transact-SQL, dopo aver sostituito DATABASE_NAME

    con il nome del database sulla tua istanza SQL Server.

    USE DATABASE_NAME
    GO
    SELECT compatibility_level
    FROM sys.databases WHERE name = 'DATABASE_NAME'
    
  2. Determina il livello di compatibilità target.

    Identifica la designazione predefinita del livello di compatibilità per la versione aggiornata del database per determinare il livello di compatibilità target per il database. Ad esempio, per SQL Server 2022, il livello di compatibilità predefinito è 160. Consulta la tabella che mappa le nuove versioni di SQL Server con i livelli di compatibilità.

  3. Valuta le differenze tra i livelli di compatibilità attuali e target.

    Prima di eseguire l'upgrade del livello di compatibilità, esamina le differenze di comportamento del sistema tra il livello di compatibilità attuale e il livello di compatibilità target. Consulta l'elenco completo delle differenze tra i livelli di compatibilità.

  4. Raccogli una base di dati dei carichi di lavoro.

    Prima di eseguire l'upgrade del livello di compatibilità, raccogli una base di dati dei carichi di lavoro utilizzando l'archivio di query di SQL Server, in modo da poter identificare e gestire in un secondo momento le query pregresse. Puoi utilizzare il datastore delle query per acquisire query e piani per un ciclo aziendale tipico e stabilire una base di riferimento per le prestazioni. Per un flusso di lavoro guidato, utilizza la funzionalità Assistente di ottimizzazione delle query in SQL Server Management Studio.

  5. Esegui l'upgrade del livello di compatibilità.

    Per modificare il livello di compatibilità per il database, esegui questo comando in Transact-SQL, dopo aver sostituito DATABASE_NAME

    con il nome del database sulla tua istanza SQL Server e TARGET_COMPATIBILITY_LEVEL con il livello di compatibilità target.

    ALTER DATABASE DATABASE_NAME
    SET COMPATIBILITY_LEVEL = TARGET_COMPATIBILITY_LEVEL;
    GO
    
  6. Raccogli i dati dei carichi di lavoro di cui è stato eseguito l'upgrade.

    Raccogli i dati dei carichi di lavoro di cui è stato eseguito l'upgrade utilizzando Query Store per il rilevamento di confronti e regressioni.

  7. Gestire le query pregresse.

    In gran parte, le modifiche apportate allo strumento di ottimizzazione delle query nei livelli di compatibilità aggiornati migliorano le prestazioni. Tuttavia, di tanto in tanto, alcune query potrebbero regredire nelle prestazioni. La funzionalità Query pregresse di Query Store consente di identificare le query in regressione e di forzare l'ultimo piano di query noto e valido. SQL Server offre anche la correzione automatica del piano, che può passare automaticamente all'ultimo piano noto in caso di regressione delle query.

Completa l'upgrade della versione principale

Dopo aver eseguito l'upgrade dell'istanza principale, esegui i test di accettazione per assicurarti che il sistema sottoposto ad upgrade si comporti come previsto.

Risolvere i problemi relativi a un upgrade della versione principale

Cloud SQL restituisce un messaggio di errore se tenti un comando di upgrade non valido, ad esempio se l'istanza contiene flag di database non validi per la nuova versione.

Se la richiesta di upgrade non va a buon fine, controlla la sintassi della richiesta. Se la richiesta ha una struttura valida, prova a esaminare i suggerimenti seguenti.

Visualizza i log degli upgrade

Se si verificano problemi con una richiesta di upgrade valida, Cloud SQL pubblica i log degli errori su projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fsqlserver.err. Ogni voce di log contiene un'etichetta con l'identificatore dell'istanza per aiutarti a identificare l'istanza con l'errore di upgrade. Cerca questi errori di upgrade e risolvili.

Per visualizzare i log degli errori:

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Nel riquadro Operazioni e log della pagina Panoramica dell'istanza, fai clic sul link Visualizza log degli errori SQL Server.

    Si apre la pagina Esplora log.

  4. Visualizza i log come segue:

    • Per elencare tutti i log degli errori in un progetto, seleziona il nome log nel filtro di log Nome log.

    Per ulteriori informazioni sui filtri delle query, consulta Query avanzate.

    • Per filtrare i log degli errori di upgrade per una singola istanza, inserisci la seguente query nella casella Cerca in tutti i campi dopo aver sostituito DATABASE_ID

    con l'ID progetto seguito dal nome dell'istanza in questo formato: project_id:instance_name.

    resource.type="cloudsql_database"
    resource.labels.database_id="DATABASE_ID"
    logName : "projects/PROJECT_ID/logs/cloudsql.googleapis.com%2Fsqlserver.err"
    

    Ad esempio, per filtrare i log degli errori di upgrade in base a un'istanza denominata shopping-db in esecuzione nel progetto buylots, utilizza il seguente filtro query:

     resource.type="cloudsql_database"
     resource.labels.database_id="buylots:shopping-db"
     logName : "projects/buylots/logs/cloudsql.googleapis.com%2Fsqlserver.err"
    

Ripristina alla versione principale precedente

Se il sistema di database aggiornato non funziona come previsto, potresti dover ripristinare l'istanza alla versione precedente. Per farlo, ripristina il backup precedente all'upgrade in un'istanza di ripristino di Cloud SQL, che è una nuova istanza che esegue la versione pre-upgrade.

Per ripristinare la versione precedente, segui questi passaggi:

  1. Identifica il backup prima dell'upgrade.

    Consulta Backup automatici degli upgrade.

  2. Crea un'istanza di recupero.

    Crea una nuova istanza Cloud SQL utilizzando la versione principale che Cloud SQL era in esecuzione al momento dell'esecuzione del backup pre-upgrade. Imposta gli stessi flag e le stesse impostazioni dell'istanza utilizzati dall'istanza originale.

  3. Ripristina il backup prima dell'upgrade.

    Ripristina il backup precedente all'upgrade nell'istanza di recupero. Il completamento potrebbe richiedere diversi minuti.

  4. Aggiungi le tue repliche di lettura.

    Se utilizzavi repliche di lettura, aggiungile singolarmente.

  5. Connetti la tua applicazione.

    Una volta recuperato il sistema del database, aggiorna l'applicazione con i dettagli sull'istanza di ripristino e sulle sue repliche di lettura. Puoi riprendere a gestire il traffico nella versione pre-upgrade del tuo database.

Limitazioni

Questa sezione elenca le limitazioni per un upgrade della versione principale in loco.

  • Non puoi eseguire un upgrade della versione principale in loco su una replica esterna.

Domande frequenti

Quando esegui l'upgrade della versione principale del database potrebbero sorgere le seguenti domande.

La mia istanza non è disponibile durante un upgrade?
Sì. L'istanza rimane non disponibile per un periodo di tempo mentre Cloud SQL esegue l'upgrade.
Quanto tempo richiede un upgrade?

L'upgrade di una singola istanza in genere richiede meno di 10 minuti. Se la configurazione dell'istanza utilizza un numero ridotto di vCPU o memoria, l'upgrade potrebbe richiedere più tempo.

Se l'istanza ospita troppi database o tabelle oppure se i database sono molto grandi, l'upgrade potrebbe richiedere ore o addirittura il timeout perché il tempo di upgrade corrisponde al numero di oggetti nei database. Se devi eseguire l'upgrade di più istanze, il tempo totale di upgrade verrà incrementato in modo proporzionale.

Posso monitorare ogni passaggio del processo di upgrade?
Cloud SQL consente di monitorare se un'operazione di upgrade è ancora in corso, ma non puoi monitorare i singoli passaggi di ogni upgrade.
Posso annullare l'upgrade dopo averlo avviato?
No, non puoi annullare un upgrade una volta avviato. Se l'upgrade non va a buon fine, Cloud SQL recupera automaticamente l'istanza nella versione precedente.
Cosa succede alle mie impostazioni durante un upgrade?

Quando esegui un upgrade della versione principale in loco, Cloud SQL conserva le impostazioni del database, tra cui il nome dell'istanza, l'indirizzo IP, i valori dei flag configurati in modo esplicito e i dati utente. Tuttavia, il valore predefinito delle variabili di sistema potrebbe cambiare.

Per saperne di più, consulta Configurare i flag di database. Se un determinato flag o valore non è più supportato nella versione di destinazione, Cloud SQL rimuove automaticamente il flag durante l'upgrade.

Passaggi successivi