在SQL Server中添加PostgreSQL为linked server

首先介绍几个名词:

ODBC

ODBC(Open Database Connectivity,开放数据库互连)是微软于1992年发布的提供一套标准API来访问数据库系统。这些API通过SQL完成任务,其本身也提供对SQL的支持,用户可以直接将SQL送给ODBC执行。

ODBC Driver

ODBC只是一套API接口,而ODBC Driver是对这些Api的实现。各个数据库可以有针对ODBC的Driver

OLEDB

OLEDB也是有微软发布的一套标准API。允许访问来自各种不同的数据源(不限于数据库,比如Excel也可以)。API是以COM的形式提供。OLEDB设计的初衷是为了扩展与取代ODBC。

OLEDB Provider

提供OLEDB接口供调用者访问数据的应用或软件模块成为OLEDB Provider。

然后介绍一个工具:ODBC Data Source Administrator

 

这个工具是Windows对ODBC Driver和ODBC Data Source进行管理的工具。在安装了相关数据库的ODBC Driver后,Driver的信息会再Driver列表中。

Data Source Name 是指对需要操作的数据源的定义(服务器地址,端口,数据库名等),简称为DSN(Data Source Name)。定义好后需要访问数据源的时候只需用数据源的名称表示即可。

 根据DSN的有效范围,DSN可以分为User DSN和System DSN。

有了如上的知识储备后,就不难理解如何在SQL Server中创建PostgreSQL的Link Server了。

第一步,我们需要在SQL Server所在的服务器上下载并安装PostgreSQL 的ODBC Driver。这样就具备了通过ODBC接口访问PostgreSQL的能力了。安装完后PostgreSQL Driver会出现在Data Source Administrator的Driver列表中。

第二步,为需要访问的PostgreSQL数据库创建一个DSN。如上图。

第三步,在SQL Server SSMS中创建一个Link Server。

 

第四步,填写Linked Server的信息

 

Provider: 选择 OLEDB Provider for ODBC Driver
Product Name: Data Source的名字,这里填写DSN的名字
Data Source: DSN的名字
Provider String: 这里是填写ODBC连接字符串,可以填写基于DSN或者不急于DSN的连接字符串。(https://docs.microsoft.com/en-us/sql/ado/guide/appendixes/microsoft-ole-db-provider-for-odbc?view=sql-server-ver15)

基于DSN:DSN=name; UID=user; PWD=password

不基于DSN:DRIVER=PostgreSQL 64-bit ODBC Drivers; SERVER=server; DATABASE=database; UID=MyUserID; PWD=MyPassword

第五步,填写Sql Server登录用户与PostgreSQL登录用户的映射。这里就将所有SqlServer用户映射到一个PostgreSQL用户上。

保存后Linked Server就创建好了。

接下来就可以对Linked Server的数据进行查询了。查询的时候只需要将Linked Server的名字带上就可以了。例如:

SELECT * FROM [linked server name].[database name].[schema name].[table name] 

 

posted @ 2022-01-09 17:28  self.refactoring  阅读(527)  评论(0编辑  收藏  举报