有没有办法创建从 Azure SQL 数据库到 PostgreSQL 的链接服务器?

Is there a way to create a linked server from an Azure SQL database to PostgreSQL?

我一直在做一些研究,但我还没有看到关于这个问题的解决方案。有谁知道是否真的可以从 Azure SQL 数据库创建链接服务器以将其连接到 PostgreSQL 数据库?

我注意到文件夹 server objects 存在于本地数据库中,但是,在 Azure 上该文件夹不存在。我是否可以假设 Azure SQL 数据库不支持链接服务器?

是的,你是对的。

Azure SQL数据库(单库)不支持linked server。我们无法创建到任何其他服务器的链接服务器。

我发现另一种方法可以帮助您连接到 Postgresql。

请参考本教程:Connect to PostgreSQL as an External Data Source using PolyBase:

在 SQL Server 2019 中使用适用于 PostgreSQL 和 PolyBase 的 CData ODBC 驱动程序 create an external data source 访问实时 PostgreSQL 数据。

创建主加密密钥

执行以下SQL命令创建新的主密钥,'ENCRYPTION,'加密外部数据源的凭据。

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';

创建凭证数据库

执行以下 SQL 命令为连接到 PostgreSQL 数据的外部数据源创建凭据。

CREATE DATABASE SCOPED CREDENTIAL postgresql_creds
WITH IDENTITY = 'username', SECRET = 'password';

为 Postgre 创建外部数据源SQL

执行以下 SQL 命令,使用之前配置的 DSN 和凭据,使用 PolyBase 为 PostgreSQL 创建外部数据源。

CREATE EXTERNAL DATA SOURCE cdata_postgresql_source
WITH ( 
  LOCATION = 'odbc://SERVERNAME[:PORT]',
  CONNECTION_OPTIONS = 'DSN=CData PostgreSQL Sys',
  -- PUSHDOWN = ON | OFF,
  CREDENTIAL = postgresql_creds
);

为 Postgre 创建外部表SQL

基于 PostgreSQL 订单创建外部 table 的语句类似于以下内容:

CREATE EXTERNAL TABLE Orders(
  ShipName [nvarchar](255) NULL,
  ShipCity [nvarchar](255) NULL,
  ...
) WITH ( 
  LOCATION='Orders',
  DATA_SOURCE=cdata_postgresql_source
);

我无法为你测试这个,因为我没有 PostgreSQL。

希望这对您有所帮助。