有没有一种方法可以创建从Azure SQL数据库到PostgreSQL的链接服务器?

时间:2020-03-05 10:00:16

标签: sql-server postgresql azure linked-server

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

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

1 个答案:

答案 0 :(得分:1)

是的,你是对的。

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

enter image description here

我发现另一种方法可以帮助您连接到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';

为PostgreSQL创建外部数据源

执行以下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
);

为PostgreSQL创建外部表

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

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

因为我没有PostgreSQL,所以无法为您测试。

希望这会有所帮助。