数据库、ArcCatalog空间数据源正常访问,数据库设置没问题时,ArcEngine连接SDE时报"ORA-12560: TNS: 协议适配器错误"的解决办法;ArcEngine连接SDE总结
碰到的问题描述:
通过C# 基于ArcEngine写SDE直连的时候测试项目连接属性设置为如下:
tPropSet.SetProperty("User", "GISDATA");
tPropSet.SetProperty("Password", "GISDATA");
tPropSet.SetProperty("Instance", "sde:oracle11g:127.0.0.1/ORCL");
测试连接通过,但放到我的程序时刚开始是可以测试通过的,突然就测试失败了,于是乎我就添加属性参数如下:
pPropertySet.SetProperty("SERVER", "127.0.0.1");
pPropertySet.SetProperty("Database", orcl);
结果测试项目依然可以通过,但我的正式程序还是通不过("ORA-12560: TNS: 协议适配器错误"错误,但我Oracle服务器及客户端设置正常)
最后上网查找资料,发现直连SDE还有一种写法,修改后放到我的正式程序中执行顺利通过 代码如下:
pPropertySet.SetProperty("AUTHENTICATION_MODE", "DBMS");
pPropertySet.SetProperty("DB_CLIENT", "ORCL");
pPropertySet.SetProperty("IS_GEODATABSE", "true");
pPropertySet.SetProperty("DB_CONNECTION_PROPERTIES", "ORCL");
pPropertySet.SetProperty("SERVER", "127.0.0.1");
//1、oracle$后是客户端配置的实例名时 IP(SERVER)可以不设置 随便设置一个IP也可以
//2、oracle$后是服务器IP【:端口(如1521)】/服务器实例名 时 IP(SERVER)一定要填且必须对
// sde:oracle$orcl(客户端配置的实例名) 或者 sde:oracle$127.0.0.1[:1521]/orcl
pPropertySet.SetProperty("INSTANCE", "sde:oracle$orcl");
pPropertySet.SetProperty("USER", "GISDATA");
pPropertySet.SetProperty("PASSWORD", "GISDATA");
//pPropertySet.SetProperty("VERSION", "SDE.DEFAULT");//默认版本可以不设置
tWorkspace = tWorkspaceFactory.Open(pPropertySet, 0);
总结:
1、直接通过Oracle Client 配置的服务名直连
在ArcCatalog中设置 可以直接设置客服端服务名orcl156连接成功后自动转成sde:oracle11g:orcl156。但该方式再ArcEngine中不支持 sde:oracle11g:orcl156这种写法。
如用代码想用Oracle Client 配置的服务名直连的话可以用 "sde:oracle$orcl156",详情见上面的实例代码。
2、直接通过Oracle 服务器实例名直连
2.1 sde:oracle11g:127.0.0.1[:1521]/orcl (默认端口号1521时在ArcCatalog 10.2写上端口也不会报错,不写也不会报错,但在ArcEnginge中写上默认的端口1521就报错)
2.2 ArcCatalog 10.2不写sde:oracle11g: 程序会默认加上
2.3 tPropSet.SetProperty("Instance", "sde:oracle11g:127.0.0.1/orcl");//sde:oracle11g:127.0.0.1:1521/orcl 报错
2.4 tPropSet.SetProperty("Instance", "127.0.0.1/orcl");必须加 sde:oracle11g:
3. 连接Sql Server数据库
3.1 ArcCatalog 10.2连接SQL Server的连接字符串 实例:127.0.0.1,1433[\MSSQLSER ] MSSQLSER写错或不写都可以连上 。实例前不能加 sde:sqlserver: 否则连不上
3.2 ArcEngine tPropSet.SetProperty("Instance","sde:sqlserver:127.0.0.1,1433\MSSQLSER "); 实例必须以 "sde:sqlserver:"开头,否则程序不知道连接的数据库类型。
tPropSet.SetProperty("Database", "GISDATA");
tPropSet.SetProperty("Instance", "sde:sqlserver:127.0.0.1,1433[\MSSQLSERVER]);//MSSQLSERVER可以不设置,写错了也是可以连接的
tPropSet.SetProperty("Password", 123);
tPropSet.SetProperty("User", sa);
如果设置几个还报错接着可以增加参数设置
//tPropSet.SetProperty("IS_GEODATABSE", "true");
//tPropSet.SetProperty("AUTHENTICATION_MODE", "DBMS");
//tPropSet.SetProperty("Version", "DBO.DEFAULT");//注意SQL Server数据库SDE默认的版本不是SDE.DEFAULT而是DBO.DEFAULT
//tPropSet.SetProperty("Server", "127.0.0.1");
4 各版本的ArcCatalog连接SDE数据库
4.1 ArcGIS 9.3版本
INSTANCE sde:oracle11g (oracle9i oralce10g,服务器的 oracle版本)PASSWORDpass@198 (198,oraclenetmanager配置的 服务命名)
或者如格式:
INSTANCEsde:oracle11g
PASSWORDsde@192.168.1.198:1521/orcl
通过AE来实现的时候,不可以通过RDBMS来进行连接,而应该还是通过SDEWorkspace来进行
IWorkspaceFactory pWorkspaceFactory = new SdeWorkspaceFactoryClass();
IPropertySet propSet = new PropertySetClass();
propSet.SetProperty("SERVER", "192.168.16.46");
propSet.SetProperty("INSTANCE", "sde@oracle10g");
propSet.SetProperty("USER", "system");
propSet.SetProperty("PASSWORD", "****@orc");
propSet.SetProperty("VERSION", "SDE.DEFAULT");
IWorkspace pWorkspace = pWorkspaceFactory.Open(propSet, 0);
IFeatureWorkspace pFeatWS = pWorkspace as IFeatureWorkspace;
4.2 ArcGIS 10.1版本
1.INSTANCE sde:oracle11g:192.168.1.198/orcl (oracle10g或 oracle9i)(数据库是默认端口号1521时)
INSTANCE sde:oracle11g:192.168.1.198:1622/orcl(数据库不是 是默认端口号1521,而是1622时)
如果数据库端口是默认端口1521则ip后不能带端口号,否则报错;
如果不是默认端口1521,则需要带上端口如: sde:oracle11g:192.168.1.198:1622/orcl
2.INSTANCE sde:oracle11g:198
其中198为oracleCilent Net Manager配置的名称
3.INSTANCEsde:oracle11gPASSWORDpass@198
在我们系统中instance对应的是服务
4.2 ArcGIS 10.2版本
sde:oracle11g:127.0.0.1:1521/orcl 默认端口号1521写上也不会报错,不写也不会报错
sde:oracle11g:127.0.0.1:1521/orcl
sde:oracle11g:orclclient orclclient客户端设置的服务名(oracleCilent Net Manager配置的名称) //ArcEnginge不支持此种写好 但支持这种写法sde:oracle$orclclient
tPropSet.SetProperty("Instance", "sde:oracle11g:127.0.0.1/orcl");//sde:oracle11g:127.0.0.1:1521/orcl 报错
tPropSet.SetProperty("Instance", "127.0.0.1/orcl");必须加 sde:oracle11g:
SQL Server
INSTANCE 127.0.0.1
127.0.0.1,1433
127.0.0.1,1433\MSSQLSERVER 端口一旦不是1433时必须写,MSSQLSERVER写错也可以连上
SQL Server 不支持sde:SqlServer:127.0.0.1,1433\MSSQLSERVER但ArcEngine却支持
5.ArcEngine10.2 SQLServer可以采用SqlWorkspaceFactory来连接SDE数据库
//dbclient=SQLServer;serverinstance=127.0.0.1,1433\MSSQLSERVER;database=GISDATA;user=sa;password=123
Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SqlWorkspaceFactory");
IWorkspaceFactory2 workspaceFactory2 = (IWorkspaceFactory2)Activator.CreateInstance(factoryType);
String[] connectionProps =
{
"dbclient=SQLServer", @"serverinstance=127.0.0.1,1433\MSSQLSERVER",
"database=GISDATA", "user=sa","password=123"
};
String connString = String.Join(";", connectionProps);
// Open the workspace.
IWorkspace workspace = workspaceFactory2.OpenFromString(connString, 0);
数据库、ArcCatalog空间数据源正常访问,数据库设置没问题时,ArcEngine连接SDE时报"ORA-12560: TNS: 协议适配器错误"的解决办法;ArcEngine连接SDE总结的更多相关文章
- ORACLE中的Net Configuration Assistant 点击后无反应, sqlplus登录数据库提示Oracle11g ORA-12560: TNS: 协议适配器错误
首先是对于点击无反应问题: 如果是客户端下的Net Configuration Assistant可用,而服务器端的Net Configuration Assistant等工具不可用的原因如下. 环境 ...
- plsql 连接oralce数据库,报ora 12557 tns 协议适配器不可加载错误
使用plsql 连接oracle 数据库报ora 12557 错误: 解决方案: 1:首先确保服务中的service以及监听器都开启 2:F:\app\Administrator\product\11 ...
- oracle数据库 ORA-12560: 协议适配器错误
ORA-12560: 协议适配器错误 造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个: 1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具-- ...
- 解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法
SQL SERVER数据库进行备份时出现“操作系统错误5(拒绝访问).BACKUP DATABASE 正在异常终止.”错误.我们应该如何解决这个问题?小编今天为大家推荐一个解决办法. 一般备份文件选择 ...
- SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法 在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备 ...
- [数据库] windows server 2003下mysql出现10048错误的解决办法 Can't connect to MySQL server on '127.0.0.1' (10048)(抄)
网站访问量大了的时候mysql连接数自然就多了,当超出mysql最大连接数的时候就会出现错误,当出现too many字样的错误的时候一般是因为连接数的问题,只需要修改最大连接数max_conectio ...
- 关于C#联接数据库是出现'未在本地计算机上注册'错误的解决办法
今天在用c#连接access数据库处理数据的时候遇到了一个诡异的问题, 未在本地计算机上注册"Microsoft.ACE.OLEDB.12.0"提供程序 我们的部分代码如下: st ...
- JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法
转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述:今天使用jdbc连接oracle 10.2.0. ...
- 四十八:数据库之alembic常用命令和经典错误的解决办法
常用命令:1.init:创建一个alembic仓库2.reversion:创建一个新的版本3.--autogenerate:自动将当前模型的修改,生成迁移脚本4.-m:message,可以记录本次迁移 ...
随机推荐
- ImageAnimator类方法(动画设计)
ImageAnimator类常用方法如表所示. 表 ImageAnimator类常用方法 方法 说明 Animate 将多帧图像显示为动画 CanAnimate 返回一个布尔值,该值指示指定图像 ...
- 通过两个小栗子来说说Java的sleep、wait、notify、notifyAll的用法
线程是计算程序运行的最小载体,由于单个单核CPU的硬件水平发展到了一定的瓶颈期,因此就出现了多核多CPU的情况,直接就导致程序员多线程编程的复杂.由此可见线程对于高性能开发的重要性. 那么线程在计算机 ...
- Shiro SpringMVC 非maven HelloWorld
项目用到Shiro就从网上找一些案例看看吧,结果看了很多都是maven的,没有办法就自己弄了一个.废话不多说,原理自己找开始上菜. 配置web.xml <?xml version="1 ...
- 利用Angular实现多团队模块化SPA开发框架
0.前言 当一个公司有多个开发团队时,我们可能会遇到这样一些问题: 技术选项杂乱,大家各玩各 业务重复度高,各种通用api,登录注销,权限管理都需要重复实现(甚至一个团队都需要重复实现) 业务壁垒,业 ...
- 常见优化算法统一框架下的实现:最速下降法,partan加速的最速下降法,共轭梯度法,牛顿法,拟牛顿法,黄金分割法,二次插值法
常见优化算法实现 这里实现的主要算法有: 一维搜索方法: 黄金分割法 二次差值法 多维搜索算法 最速下降法 partan加速的最速下降法 共轭梯度法 牛顿法 拟牛顿法 使用函数表示一个用于优化的目标, ...
- 延迟执行之 Invoke 函数
Invoke 函数需要继承 MonoBehaviour 类后才能使用. Invoke(string str,float a):a 秒后执行名为 str 函数(只会调用一次). Invoke(strin ...
- TP框架Ajax如何使用
ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端.并且支持JSON.JSONP.XML和EVAL四 ...
- node入门笔记
看了<node入门>http://www.nodebeginner.org/index-zh-cn.html.有些疑难点记下来. 在导出模块的时候给出的代码是这样的 var http = ...
- 软件测试管理QC
一.QC简介 1)是HP公司的产品,是B/S结构的产品 2)在QC服务器中,打开IE浏览器,在地址栏中输入QC服务器的网址或者IP地址. 查看虚拟机的IP地址: 本地连接-属性-TCP/IP协议(重点 ...
- 永中DCS再添喜讯:顺利签约海信集团
近日,永中DCS与海信集团一起携手,共创文档在线预览新篇章.出于对永中DCS文档在线预览产品的品质与服务的信赖,海信集团选择永中DCS为其提供文档在线预览技术支持,助力移动化办公(EHR系统)发展,提 ...