环境:一台装有客户端ArcGIS 10.2.2 (32位)的服务器、一台装有数据库PostgreSQL9.2(64位)的服务器目的:希望通过装有客户端ArcGIS的服务器来远程连接并访问另一台装有服务器上的PostgreSQL数据库
参考ArcGIS 帮助 10.2 中的数据库客户端、设置到PostgreSQL的连接
第一步,在客户端服务器上,为ArcGIS 10.2.2 for Desktop客户端安装 32位的PostgreSQL 9.2数据库客户端库(dll文件)
1、首先,要知道连接到数据库管理系统的所有计算机都需要安装数据库客户端,且数据库客户端的版本必须与所连接的数据库管理系统的版本相兼容。 2、由于 一些ArcGIS 客户端(如 ArcGIS for Desktop 和 ArcGIS Engine)为 32 位应用程序,如果要从这些客户端中的任意一个来创建数据库连接,则必须使用 32 位的PostgreSQL 数据库管理系统客户端库来连接至对应的数据库。 3、下载32位的 ArcGIS 10.2.2 for Desktop 客户端连接PostgreSQL 9.2(64位)数据库所需的32位PostgreSQL 9.2客户端库 (即五个dll文件:libeay32.dll、libiconv.dll、libintl.dll、libpq.dll 和 ssleay32.dll)。对于 32 位的 ArcGIS 应用程序,我们需要 32 位的库。对于 64 位的 ArcGIS 应用程序,则需要 64 位的客户端库。最后将这些客户库文件复制到 ArcGIS 客户端安装的 bin 目录中。32位 Postgresql9.2 library链接:https://pan.baidu.com/s/1KSxnus_n7MB7neQrahQPPw提取码:m4U9
# 第二步,在数据库服务器上,配置PostgreSQL数据库文件接受远程连接
1、使用PgAdmin III数据库图形管理界面点击菜单中的文件->打开pg_hba.conf文件,在该配置文件的ipv4配置后面的host all all 127.0.0.1/32 md5这一行下面添加输入如下内容:host all all 0.0.0.0/0 trust当然,如果不希望所有IP远程访问,则能将上述的0.0.0.0/0设定为特定的IP值。
2、同时还用PgAdmin III数据库图形管理界面打开postgresql.conf文件,使得其中的listen_address的值为*即可。 3、之后Win+R调出运行窗口,输入services.msc打开服务管理界面,重新启动数据库服务器上的PostgreSQL服务(见下图)4、打开pgAdmin III 连接PostgreSQL数据库,并重新加载配置文件。
第三步,防火墙设置
刚开始,我尝试了通过cmd窗口在安装ArcGIS客户端的服务器上来ping安装PostgreSQL数据库的服务器(注:两台服务器都已经申请并绑定了公网IP),但一直ping不通。
后来发现需要在安装PostgreSQL数据库的服务器上找到控制面板->系统与安全->Windows防火墙->打开或关闭防火墙功能中,关闭所有的防火墙,如下图所示: 然后重新在安装ArcGIS客户端的服务器上ping安装PostgreSQL数据库的服务器,发现可以ping通,说明网络连接成功,原来是防火墙将两台绑定公网IP的服务器隔开了,难怪一直提示请求超时,这下终于成功解决了。
第四步,利用ArcCatalog来添加数据库连接
打开ArcCatalog,找到左侧的数据库连接->添加数据库连接并双击,输入如下信息,即可成功连接。PostgreSQL数据库sde连接成功后如下图所示;