我一直在做一些研究,但是还没有找到关于这个问题的解决方案。有谁知道实际上是否可以从Azure SQL数据库创建链接服务器以将其连接到PostgreSQL数据库?
我注意到本地数据库中存在文件夹server objects
,但是在Azure上该文件夹不存在。我是否可以假定Azure SQL数据库不支持链接服务器?
答案 0 :(得分:1)
是的,你是对的。
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';
为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,所以无法为您测试。
希望这会有所帮助。