

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

# Usare Babelfish come bersaglio per AWS Database Migration Service
<a name="CHAP_Target.Babelfish"></a>

È possibile migrare i dati da un database di origine di Microsoft SQL Server a un target Babelfish utilizzando. AWS Database Migration Service

Babelfish per Aurora PostgreSQL estende l'Edizione compatibile con PostgreSQL database Amazon Aurora con la possibilità di accettare connessioni al database dai client Microsoft SQL Server. In questo modo, le applicazioni create originariamente per SQL Server possono funzionare direttamente con Aurora PostgreSQL con poche modifiche al codice rispetto a una migrazione tradizionale e senza modificare i driver del database. 

Per informazioni sulle versioni di Babelfish AWS DMS supportate come destinazione, consulta. [Obiettivi per AWS DMS](CHAP_Introduction.Targets.md) Le versioni precedenti di Babelfish su Aurora PostgreSQL richiedono un aggiornamento prima di utilizzare l'endpoint Babelfish.

**Nota**  
L'endpoint di destinazione Aurora PostgreSQL è il modo preferito per migrare i dati su Babelfish. Per ulteriori informazioni, consulta [Utilizzo di Babelfish per Aurora PostgreSQL come destinazione](CHAP_Target.PostgreSQL.md#CHAP_Target.PostgreSQL.Babelfish). 

Per informazioni sull'utilizzo di Babelfish come endpoint di database, consulta [Babelfish per Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) nella *Guida per l'utente di Amazon Aurora User Guide* 

## Prerequisiti per utilizzare Babelfish come bersaglio per AWS DMS
<a name="CHAP_Target.Babelfish.Prerequisites"></a>

È necessario creare le tabelle prima di migrare i dati per assicurarsi che vengano AWS DMS utilizzati i tipi di dati e i metadati delle tabelle corretti. Se non crei le tabelle sulla destinazione prima di eseguire la migrazione, è possibile che le tabelle AWS DMS vengano create con tipi di dati e autorizzazioni errati. Ad esempio, AWS DMS crea invece una colonna timestamp come binaria (8) e non fornisce le funzionalità previste. timestamp/rowversion 

**Per preparare e creare le tabelle prima della migrazione**

1. Esegui le istruzioni DDL di creazione della tabella che includono vincoli univoci, chiavi primarie o limiti predefiniti. 

   Non includere vincoli di chiave esterna o istruzioni DDL per oggetti come viste, stored procedure, funzioni o trigger. È possibile applicarli dopo la migrazione del database di origine.

1. Identifica eventuali colonne di identità, colonne calcolate o colonne contenenti tipi di dati rowversion o timestamp per le tabelle. Quindi, crea le regole di trasformazione necessarie per gestire i problemi noti durante l'esecuzione dell'attività di migrazione. Per ulteriori informazioni, consultare [Operazioni e regole di trasformazione](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

1. Identifica le colonne con tipi di dati che Babelfish non supporta. Quindi, modifica le colonne interessate nella tabella di destinazione per utilizzare i tipi di dati supportati o crea una regola di trasformazione che le rimuova durante l'attività di migrazione. Per ulteriori informazioni, consultare [Operazioni e regole di trasformazione](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).

   La tabella seguente elenca i tipi di dati di origine non supportati da Babelfish e il corrispondente tipo di dati di destinazione consigliato per l'uso.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/dms/latest/userguide/CHAP_Target.Babelfish.html)

**Per impostare il livello delle unità di capacità Aurora (ACUs) per il database di origine Aurora PostgreSQL Serverless V2**

È possibile migliorare le prestazioni dell'attività di AWS DMS migrazione prima di eseguirla impostando il valore ACU minimo.
+ Nella finestra delle **impostazioni della capacità Severless v2**, imposta **Minimo ACUs** su o un livello ragionevole per il tuo cluster Aurora DB. **2**

  Per ulteriori informazioni sulle unità di capacità di Aurora, consulta [Scelta dell'intervallo di capacità di Aurora serverless v2 per un cluster Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.setting-capacity.html) nella *Guida per l'utente di Amazon Aurora*. 

Dopo aver eseguito l'attività di AWS DMS migrazione, puoi reimpostare il valore minimo del tuo database di ACUs origine Aurora PostgreSQL Serverless V2 a un livello ragionevole.

## Requisiti di sicurezza quando si utilizza Babelfish come destinazione per AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Security"></a>

Di seguito vengono descritti i requisiti di sicurezza per l'utilizzo AWS DMS con un target Babelfish:
+ Il nome utente dell'amministratore (l'utente Admin) utilizzato per creare il database.
+ Accesso PSQL e utente con le autorizzazioni SELECT, INSERT, UPDATE, DELETE e REFERENCES sufficienti.

## Autorizzazioni utente per l'utilizzo di Babelfish come destinazione per AWS DMS
<a name="CHAP_Target.Babelfish.Permissions"></a>

**Importante**  
Per motivi di sicurezza, l'account utente utilizzato per la migrazione dei dati deve corrispondere a un utente registrato in qualsiasi database Babelfish utilizzato come destinazione.

L'endpoint di destinazione Babelfish richiede le autorizzazioni utente minime per eseguire una migrazione AWS DMS .

**Per creare un accesso e un utente Transact-SQL (T-SQL) con privilegi limitati**

1. Crea un accesso e una password da utilizzare per la connessione al server.

   ```
   CREATE LOGIN dms_user WITH PASSWORD = 'password';
   GO
   ```

1. Crea il database virtuale per il cluster Babelfish.

   ```
   CREATE DATABASE my_database;
   GO
   ```

1. Crea l'utente T-SQL per il database di destinazione.

   ```
   USE my_database
   GO
   CREATE USER dms_user FOR LOGIN dms_user;
   GO
   ```

1. Per ogni tabella del database Babelfish, CONCEDI le autorizzazioni alle tabelle.

   ```
   GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;  
   ```

## Limitazioni all'uso di Babelfish come obiettivo per AWS Database Migration Service
<a name="CHAP_Target.Babelfish.Limitations"></a>

Quando si utilizza un database Babelfish come destinazione per AWS DMS, si applicano le seguenti limitazioni:
+ È supportata solo la modalità di preparazione delle tabelle "**Nessuna operazione**".
+ Il tipo di dati ROWVERSION richiede una regola di mappatura delle tabelle che rimuove il nome della colonna dalla tabella durante l'attività di migrazione.
+ Il tipo di dati sql\$1variant non è supportato.
+ La modalità LOB completa è supportata. L'utilizzo di SQL Server come endpoint di origine richiede l'impostazione `ForceFullLob=True` dell'attributo di connessione di SQL Server Endpoint per la migrazione LOBs all'endpoint di destinazione.
+ Le impostazioni delle attività di replica presentano le seguenti limitazioni:

  ```
  {
     "FullLoadSettings": {
        "TargetTablePrepMode": "DO_NOTHING",
        "CreatePkAfterFullLoad": false,
        }.
      
  }
  ```
+ I tipi di dati TIME (7), DATETIME2 (7) e DATETIMEOFFSET (7) in Babelfish limitano il valore di precisione per la parte in secondi del tempo a 6 cifre. Prendi in considerazione l'utilizzo di un valore di precisione di 6 cifre per la tabella di destinazione quando utilizzi questi tipi di dati. Per le versioni 2.2.0 e successive di Babelfish, quando si utilizza TIME (7) e DATETIME2 (7), la settima cifra di precisione è sempre zero.
+ In modalità DO\$1NOTHING, DMS verifica se la tabella è già presente. Se la tabella non esiste nello schema di destinazione, DMS crea la tabella in base alla definizione della tabella di origine e mappa i tipi di dati definiti dall'utente al relativo tipo di dati di base.
+ Un'attività di AWS DMS migrazione verso un target Babelfish non supporta tabelle con colonne che utilizzano tipi di dati ROWVERSION o TIMESTAMP. È possibile utilizzare una regola di mappatura delle tabelle che rimuove il nome della colonna dalla tabella durante il processo di trasferimento. Nell'esempio di regola di trasformazione seguente, viene trasformata la tabella denominata `Actor` nell'origine per rimuovere tutte le colonne che iniziano con i caratteri `col` nella tabella `Actor` della destinazione.

  ```
  {
   	"rules": [{
  		"rule-type": "selection",is 
  		"rule-id": "1",
  		"rule-name": "1",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "%"
  		},
  		"rule-action": "include"
  	}, {
  		"rule-type": "transformation",
  		"rule-id": "2",
  		"rule-name": "2",
  		"rule-action": "remove-column",
  		"rule-target": "column",
  		"object-locator": {
  			"schema-name": "test",
  			"table-name": "Actor",
  			"column-name": "col%"
  		}
  	}]
   }
  ```
+ Per le tabelle con colonne identiche o calcolate, in cui le tabelle di destinazione utilizzano nomi con maiuscole e minuscole come Categorie, è necessario creare un'azione della regola di trasformazione che converta i nomi delle tabelle in lettere minuscole per l'attività DMS. L'esempio seguente mostra come creare l'azione della regola di trasformazione, **Make** lowercase utilizzando la console. AWS DMS Per ulteriori informazioni, consulta [Operazioni e regole di trasformazione](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.Transformations.md).  
![\[Regola di trasformazione di Babelfish\]](http://docs.aws.amazon.com/it_it/dms/latest/userguide/images/datarep-babelfish-transform-1.png)
+ Prima di Babelfish 2.2.0, DMS limitava a venti (20) il numero di colonne che era possibile replicare su un endpoint di destinazione Babelfish. Con Babelfish 2.2.0 il limite è aumentato a 100 colonne. Con Babelfish 2.4.0 e versioni successive il numero di colonne che è possibile replicare aumenta nuovamente. È possibile eseguire il seguente esempio di codice sul database SQL Server per determinare quali tabelle sono troppo lunghe.

  ```
  USE myDB;
  GO
  DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0
  WITH bfendpoint
  AS (
  SELECT 
  	[TABLE_SCHEMA]
        ,[TABLE_NAME]
  	  , COUNT( [COLUMN_NAME] ) AS NumberColumns
  	  , ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  AS InsertIntoCommandLength -- values string
        , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3)  
  		+ SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 )  
  	    + LEN( TABLE_SCHEMA ) + 3
  		+ 12 -- INSERT INTO string
  		+ 12)  -- values string
  			>= @Babelfish_version_string_limit
  			THEN 1
  			ELSE 0
  		END AS IsTooLong
  FROM [INFORMATION_SCHEMA].[COLUMNS]
  GROUP BY [TABLE_SCHEMA], [TABLE_NAME]
  )
  SELECT * 
  FROM bfendpoint
  WHERE IsTooLong = 1
  ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME
  ;
  ```

## Tipi di dati di destinazione per Babelfish
<a name="CHAP_Target.Babelfish.DataTypes"></a>

La tabella seguente mostra i tipi di dati target di Babelfish supportati durante l'utilizzo AWS DMS e la mappatura predefinita dei tipi di dati. AWS DMS 

Per ulteriori informazioni sui tipi di AWS DMS dati, vedere. [Tipi di dati per AWS Database Migration Service](CHAP_Reference.DataTypes.md) 


|  AWS DMS tipo di dati  |  Tipo di dati di Babelfish   | 
| --- | --- | 
|  BOOLEAN  |  TINYINT  | 
|  BYTES  |  VARBINARY (lunghezza)  | 
|  DATE  |  DATE  | 
|  TIME  |  TIME  | 
|  INT1  |  SMALLINT  | 
|  INT2  |  SMALLINT  | 
|  INT4  |  INT  | 
|  INT8  |  BIGINT  | 
|  NUMERIC   |  NUMERIC(p,s)  | 
|  REAL4  |  REAL  | 
|  REAL8  |  FLOAT  | 
|  STRING  |  Se la colonna è di ora o data, effettuare le seguenti operazioni:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/dms/latest/userguide/CHAP_Target.Babelfish.html) Se la colonna non è di ora o data, utilizzare VARCHAR (lunghezza).  | 
|  UINT1  |  TINYINT  | 
|  UINT2  |  SMALLINT  | 
|  UINT4  |  INT  | 
|  UINT8  |  BIGINT  | 
|  WSTRING  |  NVARCHAR(length)  | 
|  BLOB  |  VARBINARY(max) Per utilizzare questo tipo di dati con DMS, è necessario abilitare l'uso di BLOBs per un'attività specifica. DMS supporta i tipi di dati BLOB solo nelle tabelle che includono una chiave primaria.  | 
|  CLOB  |  VARCHAR(max) Per utilizzare questo tipo di dati con DMS, è necessario abilitarne l'uso CLOBs per un'attività specifica.  | 
|  NCLOB  |  NVARCHAR(max) Per utilizzare questo tipo di dati con DMS, è necessario abilitarne l'uso NCLOBs per un'attività specifica. Durante la CDC, DMS supporta i tipi di dati NCLOB solo nelle tabelle che includono una chiave primaria.  | 