Trabalhar com bancos de dados do SQL Server usando a extensão tds_fdw
Você pode usar a extensão tds_fdw do PostgreSQL para acessar bancos de dados compatíveis com o protocolo de fluxo de dados tabular (TDS), como bancos de dados do Sybase e do Microsoft SQL Server. Esse invólucro de dados externos permite que você se conecte pelo cluster de banco de dados do Aurora PostgreSQL a bancos de dados que usam o protocolo TDS, incluindo o Amazon RDS for Microsoft SQL Server. Para obter mais informações, consulte a documentação do tds-fdw/tds_fdw
A extensão tds_fdw é compatível com o Amazon Aurora PostgreSQL versão 13.6 e posterior.
Configurar o banco de dados do RDS for PostgreSQL para usar a extensão tds_fdw
Nos procedimentos a seguir, você pode encontrar um exemplo de configuração e uso de tds_fdw com um cluster de banco de dados do Aurora PostgreSQL. Antes de se conectar a um banco de dados do SQL Server usando tds_fdw, é necessário obter os seguintes detalhes da instância:
Nome de host ou endpoint. Para uma instância de banco de dados do RDS for SQL Server, você pode encontrar o endpoint usando o console. Escolha a guia “Connectivity & security” (Conectividade e segurança) e procure na seção “Endpoint and port” (Endpoint e porta).
Número da porta. O número da porta padrão para o Microsoft SQL Server é 1433.
O nome do banco de dados. O identificador do banco de dados.
Você também precisa fornecer acesso no grupo de segurança ou na lista de controle de acesso (ACL) para a porta 1433 do SQL Server. Tanto o cluster de banco de dados do Aurora PostgreSQL como a instância de banco de dados do RDS for SQL Server precisam de acesso à porta 1433. Se o acesso não estiver configurado corretamente, ao tentar consultar o Microsoft SQL Server, será exibida a seguinte mensagem de erro:
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
Para usar tds_fdw a fim de se conectar a um banco de dados do SQL Server
Conecte-se à instância primária do cluster de banco de dados do Aurora PostgreSQL usando uma conta que tenha a função
rds_superuser:psql --host=your-cluster-name-instance-1.aws-region.rds.amazonaws.com --port=5432 --username=test –-passwordInstale a extensão
tds_fdw:test=>CREATE EXTENSION tds_fdw;CREATE EXTENSION
Depois que a extensão for instalada no cluster de banco de dados do Aurora PostgreSQL , configure o servidor externo.
Para criar o servidor externo
Execute essas tarefas no cluster de banco de dados do Aurora PostgreSQL usando uma conta com privilégios rds_superuser.
Crie um servidor externo no cluster de banco de dados do Aurora PostgreSQL:
test=>CREATE SERVERsqlserverdbFOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing');CREATE SERVERPara acessar dados não ASCII do lado do SQLServer, crie um link de servidor com a opção character_set no cluster de banco de dados do Aurora PostgreSQL:
test=>CREATE SERVERsqlserverdbFOREIGN DATA WRAPPER tds_fdw OPTIONS (servername 'mssql2019.aws-region.rds.amazonaws.com', port '1433', database 'tds_fdw_testing', character_set'UTF-8');CREATE SERVERConceda uso a um usuário que não tenha permissões da função
rds_superuser; por exemplo,user1:test=>GRANT USAGE ON FOREIGN SERVERsqlserverdbTOuser1;Conecte-se como user1 e, em seguida, crie um mapeamento para um usuário do SQL Server:
test=>CREATE USER MAPPING FOR user1 SERVERsqlserverdbOPTIONS (username 'sqlserveruser', password 'password');CREATE USER MAPPINGCrie uma tabela externa vinculada a uma tabela do SQL Server:
test=>CREATE FOREIGN TABLE mytab (a int) SERVERsqlserverdbOPTIONS (table 'MYTABLE');CREATE FOREIGN TABLEConsulte a tabela externa:
test=>SELECT * FROM mytab;a --- 1 (1 row)
Usar criptografia em trânsito para a conexão
A conexão do Aurora PostgreSQL com o SQL Server usa criptografia em trânsito (TLS/SSL), dependendo da configuração do banco de dados do SQL Server. Se o SQL Server não estiver configurado para criptografia, o cliente do RDS for PostgreSQL que faz a solicitação ao banco de dados do SQL Server retornará ao estado de não criptografado.
Você pode aplicar a criptografia para a conexão com instâncias de banco de dados do RDS for SQL Server definindo o parâmetro rds.force_ssl. Para saber como, consulte Forçar conexões com a instância de banco de dados para usar SSL. Para obter mais informações sobre a configuração de SSL/TLS para o RDS for SQL Server, consulte Usar SSL com uma instância de banco de dados do Microsoft SQL Server.