

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à.

# Migrazione di un database SQL Server a Babelfish per Aurora PostgreSQL
<a name="babelfish-migration"></a>

Puoi utilizzare Babelfish per Aurora PostgreSQL per eseguire la migrazione di un database SQL Server a un cluster database Amazon Aurora PostgreSQL. Prima di eseguire la migrazione, consulta [Utilizzo di Babelfish con un singolo database o più database](babelfish-architecture.md#babelfish-single_vs_multi_db). 

**Topics**
+ [Panoramica del processo di migrazione](#babelfish-migration.process-summary)
+ [Valutazione e gestione delle differenze tra SQL Server e Babelfish](#babelfish-migration.assessing-the-source)
+ [Strumenti di importazione/esportazione per la migrazione da SQL Server a Babelfish](#babelfish-migration.import-export-tools)

## Panoramica del processo di migrazione
<a name="babelfish-migration.process-summary"></a>

Il seguente riepilogo elenca i passaggi necessari migrare l'applicazione SQL Server e farla funzionare con Babelfish. Per informazioni sugli strumenti che puoi utilizzare per i processi di esportazione e importazione e per ulteriori dettagli, consulta [Strumenti di importazione/esportazione per la migrazione da SQL Server a Babelfish](#babelfish-migration.import-export-tools). Per caricare i dati, consigliamo di utilizzarli AWS DMS con un cluster Aurora PostgreSQL DB come endpoint di destinazione.

1. Crea un nuovo cluster database Aurora PostgreSQL con Babelfish attivato. Per scoprire come, consulta [Creazione di un cluster database Babelfish per Aurora PostgreSQL](babelfish-create.md).

   Per importare i vari artefatti SQL esportati dal database SQL Server, esegui la connessione al cluster Babelfish utilizzando uno strumento SQL Server, ad esempio [sqlcmd](https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15). Per ulteriori informazioni, consulta [Utilizzo di un client SQL Server per la connessione al cluster database](babelfish-connect-sqlserver.md).

1. Nel database SQL Server che desideri migrare, esporta Data Definition Language (DDL). Il DDL è un codice SQL che descrive gli oggetti di database che contengono dati utente (ad esempio tabelle, indici e viste) e il codice di database scritto dall'utente (come procedure memorizzate, funzioni definite dall'utente e trigger).

   Per ulteriori informazioni, consulta [Utilizzo di SQL Server Management Studio (SSMS) per eseguire la migrazione a Babelfish](#babelfish-migration.import-export-tools.ssms).

1. Esegui uno strumento di valutazione per valutare l'ambito di eventuali modifiche che potrebbe essere necessario apportare per consentire a Babelfish di supportare efficacemente l'applicazione in esecuzione su SQL Server. Per ulteriori informazioni, consulta [Valutazione e gestione delle differenze tra SQL Server e Babelfish](#babelfish-migration.assessing-the-source).

1. Esamina le limitazioni dell'endpoint AWS DMS di destinazione e aggiorna lo script DDL se necessario. Per ulteriori informazioni, consulta Limitazioni all’utilizzo di un endpoint di destinazione PostgreSQL con le tabelle Babelfish in [Utilizzo di Babelfish per Aurora PostgreSQL come destinazione](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.Babelfish). 

1. Sul nuovo cluster database Babelfish, esegui il DDL nel database T-SQL specificato per creare solo gli schemi, i tipi di dati definiti dall'utente e le tabelle con i vincoli della chiave primaria.

1. Utilizzalo AWS DMS per migrare i dati da SQL Server alle tabelle Babelfish. Per la replica continua con SQL Server Change Data Capture o Replica di SQL, usa Aurora PostgreSQL anziché Babelfish come endpoint. Per farlo, vedi [Utilizzo di Babelfish per Aurora PostgreSQL come obiettivo per AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html#CHAP_Target.PostgreSQL.Babelfish).

1. Al termine del caricamento dei dati, crea tutti gli oggetti T-SQL rimanenti che supportano l'applicazione sul cluster Babelfish.

1.  Riconfigura l'applicazione client per connettersi all'endpoint Babelfish anziché al database SQL Server. Per ulteriori informazioni, consulta [Connessione a un cluster database Babelfish](babelfish-connect.md).

1. Modifica l'applicazione come richiesto e ripeti il test. Per ulteriori informazioni, consulta [Differenze tra Babelfish per Aurora PostgreSQL e SQL Server](babelfish-compatibility.md). 

Devi comunque valutare le query SQL sul lato client. Gli schemi generati dall'istanza di SQL Server convertono solo il codice SQL sul lato server. Si consiglia di effettuare la procedura seguente:
+ Acquisisci le query sul lato client utilizzando SQL Server Profiler con il modello predefinito TSQL\$1Replay. Questo modello acquisisce le informazioni sull'istruzione T-SQL che possono essere riprodotte per l'ottimizzazione e il test iterativo. Puoi avviare il profiler dal menu **Tools** (Strumenti) di SQL Server Management Studio. Scegli **SQL Server Profiler** per aprire il profiler e selezionare il modello TSQL\$1Replay.

  Da utilizzare per la migrazione di Babelfish, avvia una traccia e quindi esegui l'applicazione utilizzando i test funzionali. Il profiler acquisisce le istruzioni T-SQL. Al termine del test, interrompi la traccia. Salva il risultato in un file XML con le query sul lato client (File > Save as > Trace XML File for Replay) (File > Salva con nome > Traccia file XML per la ripetizione).

  Per ulteriori informazioni, consulta [SQL Server Profiler](https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler?view=sql-server-ver16) nella documentazione di Microsoft. Per ulteriori informazioni sul modello TSQL\$1Replay, consulta [SQL Server Profiler Templates](https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler-templates?view=sql-server-ver16) (Modelli di SQL Server Profiler).
+ Per applicazioni con query SQL complesse sul lato client, si consiglia di utilizzare Babelfish Compass per analizzarle per la compatibilità delle query con Babelfish. Se l'analisi indica che le istruzioni SQL lato client contengono funzionalità SQL non supportate, esamina gli aspetti SQL nell'applicazione client e modifica in base alle esigenze.
+ È inoltre possibile acquisire le query SQL come eventi estesi (formato .xel). Per farlo, usa SSMS Profiler. XEvent Dopo aver generato il file .xel, estrai le istruzioni SQL nei file .xml che Compass può elaborare. Per ulteriori informazioni, consulta [Use the SSMS XEvent Profler nella documentazione](https://learn.microsoft.com/en-us/sql/relational-databases/extended-events/use-the-ssms-xe-profiler?view=sql-server-ver16) Microsoft.

Se sei soddisfatto di tutti i test, dell'analisi e delle eventuali modifiche necessarie all'applicazione migrata, puoi iniziare a utilizzare il database Babelfish in produzione. A questo scopo, interrompi il database originale e reindirizza le applicazioni client live per utilizzare la porta Babelfish TDS.

**Nota**  
AWS DMS ora supporta la replica dei dati da Babelfish. Per ulteriori informazioni, consulta [AWS DMS now supports Babelfish for Aurora PostgreSQL as a source](https://aws.amazon.com/about-aws/whats-new/2024/06/aws-dms-babelfish-aurora-postgresql-source/).

## Valutazione e gestione delle differenze tra SQL Server e Babelfish
<a name="babelfish-migration.assessing-the-source"></a>

 Per ottenere risultati ottimali, si consiglia di valutare il codice di query generato DDL/DML e quello del client prima di migrare effettivamente l'applicazione di database SQL Server a Babelfish. A seconda della versione di Babelfish e delle funzionalità specifiche di SQL Server implementate dall'applicazione, potrebbe essere necessario rifattorizzare l'applicazione o utilizzare alternative per funzionalità che non sono ancora completamente supportate in Babelfish.
+ Per valutare il codice dell'applicazione SQL Server, utilizza Babelfish Compass sul DDL generato per determinare fino a che punto il codice T-SQL è supportato da Babelfish. Identifica il codice T-SQL che potrebbe richiedere modifiche prima di essere eseguito su Babelfish. Per ulteriori informazioni su questo strumento, consulta lo strumento [Babelfish](https://github.com/babelfish-for-postgresql/babelfish_compass/releases/latest) Compass su. GitHub
**Nota**  
Babelfish Compass è uno strumento open source. Segnala eventuali problemi con Babelfish Compass tramite Support GitHub anziché tramite Support. AWS 

È possibile utilizzare la procedura guidata Generate Scripts (Genera script) con SQL Server Management Studio (SSMS) per generare il file SQL valutato da Babelfish Compass o dall'interfaccia della linea di comando AWS Schema Conversion Tool . Consigliamo di effettuare i seguenti passaggi per semplificare la valutazione.

1. Nella pagina **Choose Objects** (Scegli oggetti), scegli **Script entire database and all database objects** (Script per l'intero database e tutti gli oggetti del database).   
![\[\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-wizard-choose-objects.png)

1. Per **Set Scripting Options** (Imposta le opzioni di script), scegli **Save as script file** (Salva come file script) come **Single script file** (File script singolo).   
![\[\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-wizard-set-scripting-options.png)

1. Scegli **Advanced** (Avanzato) per modificare le opzioni di script predefinite e identificare le funzionalità che normalmente sono impostate su false per una valutazione completa:
   + Script Change Tracking (Monitoraggio delle modifiche allo script) su True
   + Script Full-Text Indexes (Indici di testo completo dello script) su True
   + Script Triggers (Trigger script) su True
   + Script Logins (Accessi di script) su True
   + Script Owner (Proprietario script) su True
   + Script Object-Level Permissions (Autorizzazioni a livello di oggetto script) su True
   + Script Collations (Regole di confronto script) su True  
![\[\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-advanced-scripting-options.png)

1. Segui i restanti passaggi della procedura guidata per generare il file.

## Strumenti di importazione/esportazione per la migrazione da SQL Server a Babelfish
<a name="babelfish-migration.import-export-tools"></a>

 Ti consigliamo di utilizzarlo AWS DMS come strumento principale per la migrazione da SQL Server a Babelfish. Tuttavia, Babelfish supporta diversi altri modi per la migrazione dei dati con gli strumenti SQL Server, tra cui i seguenti.
+ SQL Server Integration Services (SSIS) per tutte le versioni di Babelfish. Per ulteriori informazioni, consulta [Migrate from SQL Server to Aurora PostgreSQL using SSIS and Babelfish](https://aws.amazon.com/blogs/database/migrate-from-sql-server-to-aurora-postgresql-using-ssis-and-babelfish/) (Migrazione da SQL Server ad Aurora PostgreSQL utilizzando SSIS e Babelfish). 
+ Usa SSMS Import/Export Wizard per le versioni 2.1.0 e successive di Babelfish. Questo strumento è disponibile tramite SSMS, ma anche come strumento autonomo. Per ulteriori informazioni, consulta [Welcome to SQL Server Import and Export Wizard](https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/welcome-to-sql-server-import-and-export-wizard?view=sql-server-ver16) nella documentazione di Microsoft.
+ Questa utilità Bulk Data Copy Program (bcp) di Microsoft consente di copiare i dati da un'istanza Microsoft SQL Server in un file di dati nel formato specificato. Per ulteriori informazioni, consulta [bpc Utility](https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-ver16) nella documentazione di Microsoft. Babelfish ora supporta la migrazione dei dati utilizzando il client BCP e l'utilità bcp ora supporta il flag `-E` (per le colonne di identità) e il flag -b (per gli inserimenti in batch). Alcune opzioni bcp non sono supportate, incluse `-C`, `-T`, `-G`, `-K`, `-R`, `-V` e `-h`.

### Utilizzo di SQL Server Management Studio (SSMS) per eseguire la migrazione a Babelfish
<a name="babelfish-migration.import-export-tools.ssms"></a>

Si consiglia di generare file separati per ciascun tipo di oggetto specifico. È possibile utilizzare prima la procedura guidata Generate Scripts (Genera script) di SSMS per ogni set di istruzioni DDL e quindi modificare gli oggetti come gruppo per risolvere eventuali problemi riscontrati durante la valutazione.

Esegui questi passaggi per migrare i dati utilizzando AWS DMS o altri metodi di migrazione dei dati. Esegui prima questi tipi di script di creazione per un approccio migliore e più veloce per caricare i dati nelle tabelle Babelfish in Aurora PostgreSQL. 

1. Esegui le istruzioni `CREATE SCHEMA`. 

1. Esegui le istruzioni `CREATE TYPE` per creare i tipi di dati definiti dall'utente. 

1. Esegui le istruzioni `CREATE TABLE` di base con le chiavi primarie o i vincoli univoci.

Esegui il caricamento dei dati utilizzando lo import/export strumento consigliato. Esegui gli script modificati per i passaggi seguenti in modo da aggiungere gli oggetti del database rimanenti. Sono necessarie le istruzioni create table per eseguire questi script per i vincoli, i trigger e gli indici. Dopo la generazione degli script, elimina le istruzioni create table.

1. Esegui le istruzioni `ALTER TABLE` per i vincoli di controllo, i vincoli di chiave esterna, i vincoli predefiniti.

1. Esegui le istruzioni `CREATE TRIGGER`.

1. Esegui le istruzioni `CREATE INDEX`.

1. Esegui le istruzioni `CREATE VIEW`.

1. Esegui le istruzioni `CREATE STORED PROCEDURE`.

**Per generare gli script per ogni tipo di oggetto**

Utilizza i seguenti passaggi per creare le istruzioni di base per la creazione di tabelle utilizzando la procedura guidata Generate Scripts (Genera script) di SSMS. Segui la stessa procedura per generare gli script per i diversi tipi di oggetto.

1. Eseguire la connessione all'istanza SQL Server esistente.

1. Apri il menu contestuale (tasto destro del mouse) per il nome di un database.

1. Scegli **Tasks** (Attività), quindi seleziona **Generate Scripts... ** (Genera script...).

1. Nel riquadro **Choose Objects** (Scegli oggetti), seleziona **Select specific database objects** (Seleziona oggetti di database specifici). Scegli **Tables** (Tabelle), seleziona tutte le tabelle. Seleziona **Successivo** per continuare.   
![\[\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-choose-objects-tables.png)

1. Nella pagina **Set Scripting Options** (Imposta opzioni di scripting), scegli **Advanced** (Avanzato) per aprire le impostazioni **Options** (Opzioni). Per generare le istruzioni di base create table, modifica i seguenti valori predefiniti: 
   + Script Defaults (Valori predefiniti script) su False.
   + Script Extended Properties (Proprietà estese script) su False. Babelfish non supporta le proprietà estese.
   + Script Check Constraints (Vincoli di controllo script) su False. Script Foreign Keys (Chiavi esterne script) su False.  
![\[\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-advance-scripting-def-values.png)

1. Scegli **OK**.

1. Nella pagina **Set Scripting Options** (Imposta le opzioni di script), scegli **Save as script file** (Salva come file script), quindi seleziona l'opzione **Single script file** (File script singolo). Immetti un valore nel campo **File name** (Nome file).  
![\[\]](http://docs.aws.amazon.com/it_it/AmazonRDS/latest/AuroraUserGuide/images/Babelfish-set-scripting-def-values.png)

1. Scegli **Next** (Successivo) per visualizzare la pagina **Summary wizard** (Procedura guidata di riepilogo).

1. Scegli **Next** (Successivo) per avviare la generazione dello script.

   Nella procedura guidata è possibile continuare a generare script per altri tipi di oggetti. Anziché scegliere **Finish** (Fine) dopo il salvataggio del file, seleziona il pulsante **Previous** (Precedente) per tre volte per tornare alla pagina **Choose Objects** (Scegli oggetti). Quindi ripeti i passaggi della procedura guidata per generare gli script per altri tipi di oggetti.