Babelfish prend en charge les serveurs liés - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Babelfish prend en charge les serveurs liés

Babelfish for Aurora PostgreSQL prend en charge les serveurs liés en utilisant l'extension tds_fdw PostgreSQL dans la version 3.1.0. Pour pouvoir utiliser des serveurs liés, vous devez installer l'extension tds_fdw. Pour plus d'informations sur l'extension tds_fdw, consultez Utilisation des encapsuleurs de données externes pris en charge pour Amazon Aurora PostgreSQL.

Installation de l'extension tds_fdw

Vous pouvez installer l'extension tds_fdw à l'aide des méthodes suivantes.

Utilisation de CREATE EXTENSION à partir du point de terminaison PostgreSQL
  1. Connectez-vous à votre instance de base de données PostgreSQL sur la base de données Babelfish sur le port PostgreSQL. Utilisez un compte qui possède le rôle rds_superuser.

    psql --host=your-DB-instance.aws-region.rds.amazonaws.com --port=5432 --username=test --dbname=babelfish_db --password
  2. Installez l'extension tds_fdw. Il s'agit d'une procédure d'installation unique. Vous n'avez pas besoin de réinstaller lorsque le cluster de base de données redémarre.

    babelfish_db=> CREATE EXTENSION tds_fdw; CREATE EXTENSION
Appel d'une procédure sp_execute_postgresql stockée à partir du point de terminaison TDS

Babelfish prend en charge l'installation de l'extension tds_fdw en appelant la procédure sp_execute_postgresql de la version 3.3.0. Vous pouvez exécuter des instructions PostgreSQL à partir du point de terminaison T-SQL sans quitter le port T-SQL. Pour de plus amples informations, veuillez consulter Référence des procédures Babelfish for Aurora PostgreSQL.

  1. Connectez-vous à votre instance de base de données PostgreSQL dans la base de données Babelfish sur le port T-SQL.

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

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

Fonctionnalités prises en charge

Babelfish prend en charge l'ajout de points de terminaison distants RDS for SQL Server ou Babelfish for Aurora PostgreSQL en tant que serveur lié. Vous pouvez également ajouter d'autres instances SQL Server distantes en tant que serveurs liés. Ensuite, utilisez OPENQUERY() pour récupérer des données à partir de ces serveurs liés. Depuis Babelfish version 3.2.0, les noms en quatre parties sont également pris en charge.

Les procédures stockées et les vues de catalogue suivantes sont prises en charge afin d'utiliser les serveurs liés.

Procédures stockées

  • sp_addlinkedserver : Babelfish ne prend pas en charge le paramètre @provstr.

  • sp_addlinkedsrvlogin

    • Vous devez fournir un nom d'utilisateur et un mot de passe distants explicites pour vous connecter à la source de données distante. Vous ne pouvez pas vous connecter avec les informations d'identification personnelles de l'utilisateur. Babelfish prend uniquement en charge @useself = false.

    • Babelfish ne prend pas en charge le paramètre @locallogin, car la configuration de l'accès au serveur distant spécifique à la connexion locale n'est pas prise en charge.

  • sp_linkedservers

  • sp_helplinkedsrvlogin

  • sp_dropserver

  • sp_droplinkedsrvlogin : Babelfish ne prend pas en charge le paramètre @locallogin, car la configuration de l'accès au serveur distant spécifique à la connexion locale n'est pas prise en charge.

  • sp_serveroption : Babelfish prend en charge les options de serveur suivantes :

    • query timeout (à partir de Babelfish version 3.2.0)

    • connect timeout (à partir de Babelfish version 3.3.0)

  • sp_testlinkedserver (à partir de Babelfish version 3.3.0)

  • sp_enum_oledb_providers (à partir de Babelfish version 3.3.0)

Affichages du catalogue

  • sys.servers

  • sys.linked_logins

Utilisation du chiffrement en transit pour la connexion

La connexion depuis le serveur source Babelfish for Aurora PostgreSQL vers le serveur cible distant utilise le chiffrement en transit (TLS/SSL) selon la configuration de la base de données du serveur distant. Si le serveur distant n'est pas configuré pour le chiffrement, le serveur Babelfish qui émet la requête à la base de données distante revient au mode non chiffré.

Pour appliquer le chiffrement des connexions

  • Si le serveur lié cible est une instance RDS for SQL Server, définissez rds.force_ssl = on pour l'instance SQL Server cible. Pour plus d'informations sur la configuration SSL/TLS pour RDS for SQL Server, consultez Utilisation de SSL avec une instance DB Microsoft SQL Server.

  • Si le serveur lié cible est un cluster Babelfish for Aurora PostgreSQL, définissez babelfishpg_tsql.tds_ssl_encrypt = on et ssl = on pour le serveur cible. Pour plus d'informations sur SSL/TLS, consultez Paramètres SSL Babelfish et connexions client.

Ajout de Babelfish en tant que serveur lié depuis SQL Server

Babelfish for Aurora PostgreSQL peut être ajouté en tant que serveur lié à partir d'un serveur SQL Server. Sur une base de données SQL Server, vous pouvez ajouter Babelfish en tant que serveur lié à l'aide du fournisseur Microsoft OLE DB pour ODBC : MSDASQL.

Il existe deux manières de configurer Babelfish en tant que serveur lié à partir de SQL Server à l'aide du fournisseur MSDASQL :

  • Fourniture de la chaîne de connexion ODBC en tant que chaîne du fournisseur.

  • Spécifiez le nom de la source de données (DSN) système de la source de données ODBC lors de l'ajout du serveur lié.

Limites

  • OPENQUERY() fonctionne uniquement pour SELECT et ne fonctionne pas pour DML.

  • Les noms d'objets en quatre parties ne fonctionnent que pour la lecture et ne fonctionnent pas pour modifier la table distante. UPDATE peut référencer une table distante dans la clause FROM sans la modifier.

  • L'exécution de procédures stockées sur les serveurs liés Babelfish n'est pas prise en charge.

  • La mise à niveau de la version majeure de Babelfish peut ne pas fonctionner si des objets dépendent de OPENQUERY() ou d'objets référencés par des noms en quatre parties. Vous devez vous assurer que tous les objets faisant référence à OPENQUERY() ou à des noms en quatre parties sont supprimés avant une mise à niveau de la version majeure.

  • Les types de données suivants ne fonctionnent pas comme prévu par rapport au serveur Babelfish distant : nvarchar(max)varchar(max)varbinary(max)binary(max) et time. Nous vous recommandons d'utiliser la fonction CAST pour les convertir dans les types de données pris en charge.

Exemple

Dans l'exemple suivant, une instance Babelfish for Aurora PostgreSQL se connecte à une instance de RDS for SQL Server dans le 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';

Lorsque le serveur lié est en place, vous pouvez utiliser T-SQL OPENQUERY() ou une dénomination standard en quatre parties pour référencer une table, une vue ou d'autres objets pris en charge sur le serveur distant :

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

Pour supprimer le serveur lié et toutes les connexions associées :

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

Résolution des problèmes

Vous pouvez utiliser le même groupe de sécurité pour les serveurs source et distant afin de leur permettre de communiquer entre eux. Le groupe de sécurité doit autoriser uniquement le trafic entrant sur le port TDS (1433 par défaut) et l'adresse IP source du groupe de sécurité peut être définie comme identifiant du groupe de sécurité lui-même. Pour plus d'informations sur la définition des règles de connexion à une instance à partir d'une autre instance dotée du même groupe de sécurité, consultez Règles pour la connexion à des instances à partir d'une instance avec le même groupe de sécurité.

Si l'accès n'est pas configuré correctement, un message d'erreur similaire à l'exemple suivant s'affiche lorsque vous essayez d'interroger le serveur distant.

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