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
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
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
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
-Utest
-Ppassword
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
essl = 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 aOPENQUERY()
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)
etime
. 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