在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的名字带上就可以了。例如:
1 | SELECT * FROM [linked server name ].[ database name ].[ schema name ].[ table name ] |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步