文档章节

ArcGIS 创建要素时提示“表已经被注册(table already registered)”

baiyangcao
 baiyangcao
发布于 2015/12/20 15:51
字数 829
阅读 59
收藏 0

    今天一位实施大哥在ArcCatalog中要重建一个要素类,所以就在ArcCatalog中连接上Oracle数据库,直接删除了要素类,然后重新创建了一个新的要素类,可是却报错“表已经被创建”,并提示不可以在'sde_table_registry'表中插入重复的键值,记得以前碰到过这种状态,删除的不彻底,虽然将数据库中的数据表删除了,可以在sde用户下的元数据表中的记录没有被清除,导致再次创建时报错。

 

    既然如此,就到元数据表中将相关的信息删除掉好了,所以就到sde用户下删除了table_registry表中的相关记录,再次新建要素,这次又报出了一个错误,“图层已存在[Error executing stored procedure <schema>.layer_util.insert_layer::ORA-20019: Layer 4681 already exists.]”,看样子是还有图层信息没有清除干净,这就头疼了,虽然提示了存储过程,但也不知道图层信息保存在哪张表里面… 而且在下懒鬼也没有去看存储过程的具体内容,直接google之

 

   几番查找之后,找到了sde自带的取消表注册的命令:

  • sdetable -o unregister -t tablename

 执行之,再创建要素,果然就好使了,看样子,手动删除还是有些不靠谱啊 

  后找到sde文档查看了一下这个命令的说明,具体如下: 

Remove a table from the ArcSDE table registry

Use unregister to remove a table from the TABLE_REGISTRY table (SDE_table_registry in SQL Server databases).

sdetable -o unregister -t av.world -u av -p mo -i 7654

NOTE: Tables cannot be unregistered if they have been registered as multiversioned, are part of a geodatabase object, or have a spatial column. In all cases, the dependencies must be removed first or you must use the -F option.

To manually remove the dependencies, unregister the table from the geodatabase using ArcCatalog (if it has been registered with the geodatabase) and remove the spatial column (if it has one) using the sdelayer -o delete operation.

Alternatively, you can use the -F option to force the unregistering of the table. However, when you do so, all edits stored in the delta tables are lost. The table will not be unregistered with the geodatabase.

 

来自 <http://help.arcgis.com/en/geodatabase/10.0/admin_cmds/Support_files/datamgmt/sdetable.htm#xunregister> 

大体就是说使用unregister可以从table_registry(在SQL Server中叫做SDE_table_registry)表中删除一个表记录,但是被删除表如果已经被注册为多版本,或是一个地理数据库对象的一部分,或是有一个空间列,则不能被取消注册,在任何情况下都应该先删除这些依赖关系才能再取消注册,或者也可以使用-F选项。大概是这么个意思,不过具体需要怎么取消依赖,毕竟笔者对ArcGIS不熟悉,也不甚了解。 

不过从上面来看,unregister操作应该不仅仅只是删除了table_registry表中的记录那么简单,估计还有一些其他表的依赖需要处理,否则开始直接删除table_registry表中的记录也不会仍不能新建同样的要素类了,看样子,以后还是不要乱动sde的元数据表比较好,应该尽量选择使用sde提供的命令行工具。

© 著作权归作者所有

共有 人打赏支持
baiyangcao
粉丝 0
博文 11
码字总数 8082
作品 0
沈阳
程序员
2017第十五届esri用户大会观感(一)——WAB敏捷开发

2017年10月24日和25日,在北京国际会议中心召开了第十五届esri用户大会。本次会议的主题围绕着slogan的理念提出的"Applying The Science of Where",一共有6大主题报告,6大技术论坛,10大行...

胖胖雕
2017/10/31
0
0
ArcSDE和Oracle分离安装(生产实践)

1) 安装前准备 在安装 ArcSDE 之前,确认Oracle服务端已安装好且已创建好sde库,用户并授权。请先在本地安装Oracle10g PL/SQL客户端。还需要收集以下信息: 服务器计算机名 Oracle 网络服务名...

linuxzkq
06/26
0
0
在Win7上安装ArcGIS Server 10和ArcGIS Engine 10的问题

在Win7上安装ArcGIS Server 10出现了下列问题,安装.net框架,不知道是破解破解不成功还是其他什么原因。在.net framwork安装完成,然后需要Post添加用户账户(SOM、SOC、ArcGISWebServices...

Erkuai
2011/02/26
0
0
ArcGIS Maritime Server 开发教程(九)二三维水深服务

ArcGIS Maritime Server 开发教程(九)二三维水深服务 本章导读:ArcGIS 软件体系是使用 ArcGIS Bathymetry 桌面扩展构建和管理水深数据库,并且利用 Image Server 对水深产品进行发布。本章...

liyuanxiang1984
05/24
0
0
ArcGis Engine(AE)开发环境的搭建

要想做ArcGis Engine开发,就必须得搭建好一个开发环境,不搭建好开发环境,一切只能是纸上谈兵。在这里我们使用的是ArcGis10.0和VS2008搭建开发环境。具体方法如下: 所需软件: 1. VS2008。...

WhuGisExp
2013/03/15
0
2

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之 明确责任 观察者模式 状态模式 责任链模式

观察者模式是任务分发的一种模式。 如果认为我们设计的系统的各个模块(或子系统)的最终目的是完成共同任务,那么这个任务如何分配到多个模块的就是我们遇到的第一个问题。简单设计场合我们...

backbye
15分钟前
2
0
14-利用思维导图梳理JavaSE-大汇总

14-利用思维导图梳理JavaSE-Java基础知识大汇总 主要内容 1.对象入门 2.一切都是对象 3.程序流程控制 4.初始化和消除 5.权限访问控制 6.复用类 7.多态 8.接口与抽象类 9.内部类 10.容器 11.异...

飞鱼说编程
50分钟前
5
0
利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired

大家平时使用spring依赖注入,都是怎么写的? @Servicepublic class OrderService { @Autowired private UserService userService;} 是不是很熟悉的感觉?但是呢 如果你用...

HeyS1
57分钟前
25
0
IBATIS 写BLOB字段遇到的问题

1、 首先遇到的配置问题,通过设置typeHandler 来支持写入。接下来由此引出了事务的问题。 <typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support....

echo-neo
今天
1
0
37. Sudoku Solver

Description tags: backtrack,hash table difficulty: hard Write a program to solve a Sudoku puzzle by filling the empty cells.A sudoku solution must satisfy all of the following......

52iSilence7
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部