Babelfish supporta i server collegati - 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à.

Babelfish supporta i server collegati

Babelfish per Aurora PostgreSQL supporta i server collegati utilizzando l'estensione PostgreSQL tds_fdw nella versione 3.1.0. Per utilizzare i server collegati, devi installare l'estensione tds_fdw. Per ulteriori informazioni sull'estensione tds_fdw, consulta Utilizzo dei wrapper di dati esterni supportati per Amazon Aurora PostgreSQL.

Installazione dell'estensione tds_fdw

È possibile installare un'estensione tds_fdw utilizzando i seguenti metodi.

Utilizzo di CREATE EXTENSION dall'endpoint PostgreSQL
  1. Effettua la connessione alla tua istanza database PostgreSQL sul database Babelfish nella porta PostgreSQL. Usa un account con il ruolo rds_superuser.

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=test --dbname=babelfish_db --password
  2. Installa l'estensione tds_fdw. Questo è un processo di installazione da compiere una sola volta. Non è necessario ripetere l'installazione al riavvio del cluster di database.

    babelfish_db=> CREATE EXTENSION tds_fdw; CREATE EXTENSION
Chiamata della stored procedure sp_execute_postgresql dall'endpoint TDS

Babelfish supporta l'installazione dell'estensione tds_fdw richiamando la procedure sp_execute_postgresql a partire dalla versione 3.3.0. È possibile eseguire istruzioni PostgreSQL dall'endpoint T-SQL senza uscire dalla porta T-SQL. Per ulteriori informazioni, consulta Informazioni di riferimento su Babelfish per Aurora PostgreSQL

  1. Effettua la connessione alla tua istanza database PostgreSQL sul database Babelfish nella porta T-SQL.

    sqlcmd -S your-DB-instance.aws-region.rds.amazonaws.com -U test -P password
  2. Installa l'estensione tds_fdw.

    1>EXEC sp_execute_postgresql N'CREATE EXTENSION tds_fdw'; 2>go

Funzionalità supportate

Babelfish supporta l'aggiunta di endpoint remoti RDS per SQL Server o Babelfish per Aurora PostgreSQL come server collegato. È inoltre possibile aggiungere altre istanze remote SQL Server come server collegati. Quindi, usa OPENQUERY() per recuperare i dati da questi server collegati. A partire dalla versione 3.2.0 di Babelfish, sono supportati anche i nomi in quattro parti.

Le seguenti stored procedure e visualizzazioni del catalogo sono supportate per utilizzare i server collegati.

Stored procedure

  • sp_addlinkedserver: Babelfish non supporta il parametro @provstr.

  • sp_addlinkedsrvlogin

    • È necessario fornire un nome utente e una password remoti espliciti per connetterti all'origine dati remota. Non puoi connetterti mediante le credenziali automatiche dell'utente. Babelfish supporta solo @useself = false.

    • Babelfish non supporta il parametro @locallogin poiché non è supportata la configurazione dell'accesso del server remoto specifico per l'accesso locale.

  • sp_linkedservers

  • sp_helplinkedsrvlogin

  • sp_dropserver

  • sp_droplinkedsrvlogin: Babelfish non supporta il parametro @locallogin poiché non è supportata la configurazione dell'accesso del server remoto specifico per l'accesso locale.

  • sp_serveroption: Babelfish supporta le seguenti opzioni del server:

    • timeout delle query (a partire dalla versione 3.2.0)

    • timeout di connessione (a partire dalla versione 3.3.0)

  • sp_testlinkedserver (a partire dalla versione 3.3.0 di Babelfish)

  • sp_enum_oledb_providers (a partire dalla versione 3.3.0 di Babelfish)

Visualizzazioni del catalogo

  • sys.servers

  • sys.linked_logins

Utilizzo della crittografia in transito per la connessione

La connessione dal server di origine Babelfish per Aurora PostgreSQL al server remoto di destinazione utilizza la crittografia in transito (TLS/SSL) in base alla configurazione del database del server remoto. Se il server remoto non è configurato per la crittografia, il server Babelfish che effettua la richiesta al database remoto esegue il fallback su non crittografato.

Per applicare la crittografia della connessione

  • Se il server collegato di destinazione è un'istanza RDS per SQL Server, imposta rds.force_ssl = on per l'istanza SQL Server di destinazione. Per ulteriori informazioni sulla configurazione di SSL/TLS per RDS for SQL Server, consultare Utilizzo di SSL con un'istanza database Microsoft SQL Server.

  • Se il server collegato di destinazione è un cluster Babelfish per Aurora PostgreSQL, imposta babelfishpg_tsql.tds_ssl_encrypt = on e ssl = on per il server di destinazione. Per ulteriori informazioni su SSL/TLS, consulta Impostazioni SSL Babelfish e connessioni client.

Aggiunta di Babelfish come server collegato da SQL Server

Babelfish per Aurora PostgreSQL può essere aggiunto come server collegato da un'istanza di SQL Server. In un database SQL Server, puoi aggiungere Babelfish come server collegato utilizzando il provider Microsoft OLE DB per ODBC: MSDASQL.

Esistono due modi per configurare Babelfish come server collegato da SQL Server utilizzando il provider MSDASQL:

  • Immissione di una stringa di connessione ODBC come stringa del provider.

  • Immissione del DSN di sistema dell'origine dati ODBC durante l'aggiunta del server collegato.

Restrizioni

  • OPENQUERY() funziona solo per SELECT e non funziona per DML.

  • I nomi degli oggetti in quattro parti funzionano solo per la lettura e non per la modifica della tabella remota. UPDATE può fare riferimento a una tabella remota nella clausola FROM senza modificarla.

  • L'esecuzione di stored procedure sui server collegati a Babelfish non è supportata.

  • L'aggiornamento della versione principale di Babelfish potrebbe non funzionare se sono presenti oggetti dipendenti da OPENQUERY() o oggetti a cui si fa riferimento tramite nomi in quattro parti. Devi verificare che tutti gli oggetti che fanno riferimento a OPENQUERY() o a nomi in quattro parti vengano eliminati prima di un aggiornamento della versione principale.

  • I seguenti tipi di dati non funzionano come previsto sul server Babelfish remoto: nvarchar(max), varchar(max), varbinary(max), binary(max)time. Consigliamo di utilizzare la funzione CAST per convertirli nei tipi di dati supportati.

Esempio

Nell'esempio seguente, un'istanza Babelfish per Aurora PostgreSQL si connette a un'istanza di RDS per SQL Server nel cloud.

EXEC master.dbo.sp_addlinkedserver @server=N'rds_sqlserver', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'myserver.CB2XKFSFFMY7.US-WEST-2.RDS.AMAZONAWS.COM'; EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'rds_sqlserver',@useself=N'False',@locallogin=NULL,@rmtuser=N'username',@rmtpassword='password';

Quando il server collegato è attivo, puoi quindi utilizzare T-SQL OPENQUERY () o la denominazione standard in quattro parti per fare riferimento a una tabella, una vista o altri oggetti supportati sul server remoto:

SELECT * FROM OPENQUERY(rds_sqlserver, 'SELECT * FROM TestDB.dbo.t1'); SELECT * FROM rds_sqlserver.TestDB.dbo.t1;

Per eliminare il server collegato e tutti gli accessi associati:

EXEC master.dbo.sp_dropserver @server=N'rds_sqlserver', @droplogins=N'droplogins';

Risoluzione dei problemi

È possibile utilizzare lo stesso gruppo di sicurezza sia per i server di origine sia per quelli remoti per consentire la comunicare tra loro. Il gruppo di sicurezza deve consentire solo il traffico in entrata sulla porta TDS (1433 per impostazione predefinita) e l'IP di origine nel gruppo di sicurezza può essere impostato come ID del gruppo di sicurezza stesso. Per ulteriori informazioni su come impostare le regole per la connessione a un'istanza da un'altra istanza con lo stesso gruppo di sicurezza, consulta Regole per la connessione alle istanze da un'istanza con lo stesso gruppo di sicurezza.

Se l'accesso non è configurato correttamente, quando si tenta di eseguire una query sul server remoto viene visualizzato un messaggio di errore simile al seguente.

TDS client library error: DB #: 20009, DB Msg: Unable to connect: server is unavailable or does not exist (mssql2019.aws-region.rds.amazonaws.com), OS #: 110, OS Msg: Connection timed out, Level: 9