文档章节

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

baiyangcao
 baiyangcao
发布于 2015/12/20 15:51
字数 829
阅读 60
收藏 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
沈阳
程序员
私信 提问
在线编辑(一)数据准备

本博文的所用到的软件环境如下,win7 64位 ,ArcGIS 10.1 ,数据库 postgresql-9.0.6-1-windows-x64。 下载以上的Postgres数据库,并安装,安装过程要设置一个数据库服务器的密码,其他的地方...

长平狐
2012/11/28
835
0
ArcGIS 10.1 让GP服务变得更简单

我们知道ArcGIS 以强大的空间分析而获得GISER的口碑(不仅仅如此),在桌面软件中已经有了800多个空间分析工具,并且这些空间分析工具可以根据我们的业务需要而组合使用,使得我们在工作中能...

长平狐
2012/11/28
6K
0
使用FME Extension for ArcGIS读取ArcPad AXF文件

在ArcGIS 10.1中,新增了ArcPad AXF Reader,让用户可以使用Data Interoperability扩展模块直接读取ArcPad AXF文件的内容,直到ArcGIS 10.1正式发布之前,FME提供一个临时免费的FME ArcPad ...

长平狐
2012/11/28
744
0
ArcGIS 10.1 for Server 如何注册数据库(上)

1.1 原因 在使用ArcGIS 10.1 for Server发布服务的时候,如果没有将数据所在的工作空间(个人数据库或者SDE数据库)注册到ArcGIS Server中,那么发布地图文档所使用的数据会被copy到ArcGIS ...

长平狐
2012/11/28
2.2K
0
ArcGIS 10.1 for Server 数据注册(下)

数据库注册操作 如果ArcGIS Server和Desktop安装在同一台机器上,这估计是很多人的软件环境,如果这样的话可能需要多安装一点软件(32位的数据库客户端和64位的数据库客户端都需要安装),原...

长平狐
2012/11/28
2.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
20
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
20
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
31
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
39
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部