今天一位实施大哥在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提供的命令行工具。

ArcGIS 创建要素时提示“表已经被注册(table already registered)”的更多相关文章

  1. ArcGIS创建要素类

    在使用ARCGIS软件进行工作时,免不了要建立地理数据库和要素类之类的.一下是我创建文件地理数据库并在数据库中创建要素类写相关步骤: 1.启动软件,可以使用ARCCatalog直接进行创建也可以使用A ...

  2. NuGet在创建pack时提示”The replacement token 'author' has no value“问题解决

    在创建pack时出现了“The replacement token 'author' has no value”的错误提示. 解决方法: 1.可能程序没生成过,在解决方案上重新生成解决方案,注意Deb ...

  3. 用SQL server导出到oracle,查询时提示“表或视图不存在ORA-00942”错误

    用SQL server2005的导出工具,将数据导出表到oracle,表名称里看到有这张表了,但查询或删除时都提示“ORA-00942表或者试图不存在”的错误,上网查了一下,是如下原因: “查询或删除 ...

  4. Linux中磁盘还有空间,但创建文件时提示空间不足

    首先需要知道创建文件时,需要满足两个条件:1.磁盘上还有空间:2.inode号还有剩余. 这两个条件可以分别使用"df -h"以及"df -i"查看使用情况 [ ...

  5. Eclipse创建Maven时提示错误could not resolve archetype

    今天用Eclipse创建Maven多模块项目的时候提示错误: could not resolve archetype ******release from any of the configured ...

  6. c# 创建项目时提示:未能正确加载“microsoft.data.entity.design.bootstrappackage

    vs 2005 ,vs 2008, vs 2010,安装后有时出现这个错误(我的机器装的x64的win7),很烦人.找了很多地方都不能解决.其实说起来还是开发国家牛,轻易就解决了这个问题.其实出现这个 ...

  7. c# 创建项目时提示:未能正确加载“microsoft.data.entity.design.bootstrappackage.。。。。

    google了下, 果然找到办法了.看有的说要卸载,再清理注册表,真心不愿意啊,这安装一次就得好长时间.还好找到了这篇博文,无需卸载重安装,很简单的解决的方式,具体见http://blog.sina. ...

  8. SIEBEL GET最新时提示表异常

    无法GET最新,则将此表GET一次,CHECK OUT下来,再UNDO CHECK IN即可

  9. MySQL-5.7创建及查看数据库表

    1.创建数据库表的三种语句 创建一个新表: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [tab ...

随机推荐

  1. 页面js中文乱码解决

    <script src="../Content/kindeditor-4.1.5/kindeditor.js" charset="utf-8" >& ...

  2. C#中 property 与 attribute的区别?

    C#中 property 与 attribute的区别?答:attribute:自定义属性的基类;property :类中的属性

  3. caffe安装中opencv的各种库问题

    提示有些库 high**** opencv的问题,好像是这几个库版本冲突,不要用anaconda里的lib库,用系统的库就行了,删掉或者从新链接过去.

  4. Java面试不得不知的问题(一)

    程序员面试   1. 面向对象的特征有哪些方面  ·   抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...

  5. 【Java】数组知识回顾

    package another; import java.util.Arrays; import java.util.List; /** * 数组知识回顾 * @author ChristineBas ...

  6. python基础数据类型之列表,元组操作

    一.列表的索引和切片1.列表的索引列表和字符串一样样拥有索引 lst = ["a","b","c"] print(lst[0]) # 获取第 ...

  7. LVS基于NAT模式搭建负载均衡群集

    LVS的基本架构图 负载均衡群集中,包括三个层次的组件: 1.第一层,负载调度器(BL) 前段至少有一个负载调度器(Load Balancer 或称为Director)负责响应并分发来自客户端的访问请 ...

  8. python——内建模块instance的学习

    python中内建函数isinstance的用法 语法:isinstance(object,type) 作用:来判断一个对象是否是一个已知的类型. 其第一个参数(object)为对象,第二个参数(ty ...

  9. JS中调用android和ios系统手机打开相机并可选择相册功能

    编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/57626154 实现android手机打开相机选择相册 ...

  10. Idea搭建spring framework源码环境

    spring的源码目前放在github上,https://github.com/spring-projects/spring-framework 一.安装Git 二.安装Gradle gradle为解 ...