

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

# Interazione con i database MySQL utilizzando l'estensione mysql\$1fdw
<a name="postgresql-tds-fdw"></a>

È possibile utilizzare l'estensione `tds_fdw` per PostgreSQL per accedere ai database che supportano il protocollo TDS (Tabular Data Stream), ad esempio i database Sybase e Microsoft SQL Server. Questo wrapper di dati esterni consente di connettersi dalla propria istanza database RDS for PostgreSQL ai database che utilizzano il protocollo TDS, incluso Amazon RDS for Microsoft SQL Server. Per ulteriori informazioni, consultare la documentazione di [tds-fdw/tds\$1fdw](https://github.com/tds-fdw/tds_fdw) su GitHub. 

L'estensione `tds_fdw` è supportata su Amazon RDS for PostgreSQL versioni 14.2, 13.6 e successive. 

## Configurazione del database Aurora PostgreSQL per l'utilizzo dell'estensione tds\$1fdw
<a name="postgresql-tds-fdw-setting-up"></a>

Nelle procedure seguenti, è possibile trovare un esempio di configurazione e utilizzo di `tds_fdw` con un'istanza database RDS for PostgreSQL. Prima di potersi connettere a un database di SQL Server utilizzando `tds_fdw` è necessario disporre delle seguenti informazioni sull'istanza:
+ Nome host o endpoint. Per trovare l'endpoint di un'istanza database RDS for SQL Server è possibile utilizzare la console. Scegliere la scheda Connectivity & security (Connettività e sicurezza) e cercare nella sezione Endpoint and port (Endpoint e porta). 
+ Numero della porta. Il numero di porta predefinito per Microsoft SQL Server è 1433. 
+ Nome del database. L'identificatore del database. 

È inoltre necessario fornire l'accesso al gruppo di sicurezza o alla lista di controllo degli accessi (ACL) per la porta SQL Server 1433. Sia l'istanza database RDS for PostgreSQL che l'istanza database RDS for MySQL Server necessitano dell'accesso alla porta 1433. Se l'accesso non è configurato correttamente, quando si tenta di eseguire una query su Microsoft SQL Server viene visualizzato il seguente messaggio di errore:

```
ERROR: DB-Library error: DB #: 20009, DB Msg: Unable to connect:
Adaptive Server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 0, OS Msg: Success, Level: 9
```

**Per utilizzare tds\$1fdw per connettersi a un database di SQL Server**

1. Collegarsi all'istanza database PostgreSQL utilizzando un account che dispone del ruolo `rds_superuser`:

   ```
   psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=test –-password
   ```

1. Installare l'estensione `tds_fdw`:

   ```
   test=> CREATE EXTENSION tds_fdw;
   CREATE EXTENSION
   ```

Dopo che l'estensione è stata installata sull'istanza database RDS for PostgreSQL, è necessario configurare il server esterno.

**Per creare il server esterno**

Eseguire queste attività sull'istanza database RDS for PostgreSQL utilizzando un account che dispone dei privilegi `rds_superuser`. 

1. Creazione di un server esterno nell'istanza database RDS for PostgreSQL:

   ```
   test=> CREATE SERVER sqlserverdb FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing');
   CREATE SERVER
   ```

   Per accedere ai dati non ASCII sul lato SQLServer, crea un collegamento server con l'opzione character\$1set nell'istanza database RDS per PostgreSQL:

   ```
   test=> CREATE SERVER sqlserverdb FOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing', character_set 'UTF-8');
   CREATE SERVER
   ```

1. Concedere le autorizzazioni a un utente che non dispone del ruolo `rds_superuser`, ad esempio `user1`:

   ```
   test=> GRANT USAGE ON FOREIGN SERVER sqlserverdb TO user1;
   ```

1. Collegarsi come user1 e quindi creare una mappatura per l'utente SQL Server:

   ```
   test=> CREATE USER MAPPING FOR user1 SERVER sqlserverdb OPTIONS (username 'sqlserveruser', password 'password');
   CREATE USER MAPPING
   ```

1. Creare una tabella esterna collegata a una tabella SQL Server:

   ```
   test=> CREATE FOREIGN TABLE mytab (a int) SERVER sqlserverdb OPTIONS (table 'MYTABLE');
   CREATE FOREIGN TABLE
   ```

1. Eseguire una query sulla tabella esterna:

   ```
   test=> SELECT * FROM mytab;
    a
   ---
    1
   (1 row)
   ```

### Utilizzo della crittografia in transito per la connessione
<a name="postgresql-tds-fdw-ssl-tls-encryption"></a>

La connessione da RDS per PostgreSQL verso SQL Server utilizza la crittografia in transito (TLS/SSL) in base alla configurazione del database SQL Server. Se SQL Server non è configurato per la crittografia, il client RDS per PostgreSQL che effettua la richiesta al database di SQL Server torna a comunicare in modalità non crittografata.

È possibile imporre l'utilizzo della crittografia per la connessione alle istanze database RDS for SQL Server impostando il parametro `rds.force_ssl`. Per scoprire come fare, consultare [Imposizione dell'utilizzo di SSL per le connessioni all'istanza database](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.SSL.Using.html#SQLServer.Concepts.General.SSL.Forcing). Per ulteriori informazioni sulla configurazione di SSL/TLS per RDS for SQL Server, consultare [Utilizzo di SSL con un'istanza database Microsoft SQL Server](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Concepts.General.SSL.Using.html). 