背景
总所周知,ArcSDE从技术层次上具有两种连接方式:应用服务连接和直连方式,具体这两种方式的原理以及如何配置可以查看具体的资料的介绍,在此不进行详细的介绍了。其中直连方式相对于应用服务连接在很多方面具有优势,是Esri美国一直推荐给客户使用的连接方式,但是这种连接方式在大型项目上,尤其是项目的架构为CS时,很难应用起来,原因是直连方式需要每台使用ArcEngine开发的应用的机器上安装数据库的客户端,这在大型项目中是所有人都不能接受的,因为:
(1) 需要安装客户端的机器太多,工作量太大,某些项目上可能会到几百台机器。
(2) 安装完客户端的配置比较繁琐,需要具备一定数据库专业技能的人才能胜任。
(3) 使用ArcEngine的客户大部分都不具备专业的数据库技能,因此不能完成这个任务。
(4) 开发商和厂商具备这个能力,但是地点太多,机器太多,实际运行的成本太高。
因此如果用一种全自动的方式,如在安装ArcGIS应用程序的过程将该过程完成就OK了。
原理
直连使用的是ArcEngine中的SDE的动态库直接连接的数据库,因此只需要找到SDE的需要用到的数据库的动态库以及相关的配置文件就可以了。由于Oracle高版本的客户端可以访问低版本的服务器端,因此只需要找到Oracle11G中所用到的动态库后就可以访问所有的Oracle的版本了。
具体步骤
1. 使用vmware或者hyperv创建一个windows7虚拟机,并在该机器上安装相应于windows版本的32bit的Oracle11G客户端,在安装类型选择“管理员”.
2. 到安装arcengine runtime的bin目录下找到动态库sdeora11gsrvr100.dll,使用VC的depends工具打开,如下图,
找到红框中所标示出的动态库,以及oraplc11.dll,将其单独拷贝出来放到应用程序的bin目录中。
3 将%ORACLE_HOME%/oracore和%ORACLE_HOME%/nls两个目录拷贝到应用程序的主目录中。
4 新建环境变量ORACLE_HOME,并将值设置成应用程序的主目录路径。
5.新建NLS_LANG环境变量,值为SIMPLIFIEDCHINESE_CHINA.ZHS16GBK.
6 连接方式如下图:
其中需要解释的是密码部分的格式是:
password@IP:Port/ServiceName
其中密码是用户的密码
IP为数据库服务器的IP
Port:为数据库服务器监听器所监听的端口
ServiceName为数据库服务器坚挺所支持的服务
Port和ServiceName可以通过自行通过lsnrctlstatus来查看,如果是管理比较严格的数据库,可以询问DBA。
需要注意的方面
1. oracle的客户端必须是32bit,因为ArcEngine的runtime和开发包都是32bit的。
2 oraplc11.dll动态库一定要拷贝出来,否则会出现一些问题。
3 连接的时候在service的地方一定要填写sde:oracle11g,因为你使用的是oracle11G客户端的动态库。
4 VC的depends工具我已经放到了http://download.csdn.net/detail/liufeng1980423/3999379了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!