ArcSDE数据库架构设计

时间:2016-06-07 15:47:53 来源:互联网 作者: 神秘的大神 字体:

不知道题目该怎么起名字,害怕这个名字被大家误解,这个文档其实就是想给一些初学者在使用不同数据库,怎么组织SDE库与用户数据库,怎么多个用户来操作同一个库,相互用户的权限如何来分配等等信息。 Oracle数据库 如果是Oracle数据库,在安装完ArcSDE软件,

不知道题目该怎么起名字,害怕这个名字被大家误解,这个文档其实就是想给一些初学者在使用不同数据库,怎么组织SDE库与用户数据库,怎么多个用户来操作同一个库,相互用户的权限如何来分配等等信息。

Oracle数据库

如果是Oracle数据库,在安装完ArcSDE软件,Post完毕之后,在数据库里面有一个SDE表空间和SDE用户,那么对用户的数据来说该怎么存储呢?

方式一:扩大SDE表空间的容量,直接将用户的数据导入到SDE用户或者新建一个用户但是默认表空间还是SDE表空间,反正数据都灌入到SDE表空间里面。

缺点:将用户的数据和SDE的相关结构表放在一块,显然层次不分明,用户也容易误操作SDE的相关结构表。

方式二:也就是推荐的方式,如上图所示,用户可以创建存储自己数据的表空间,然后用户也可以创建属于该表空间的一个或者多个用户,该用户赋予connect和resource权限即可,当用户使用ArcCatalog进行用户连接时,用户的数据会存储在用户自己的表空间中,但是相关的信息(用户数据的表名称、表的列名称、数据投影等信息)会自动注册到SDE表空间中,这些步骤不用用户来操作,通过ArcGIS产品的相关接口会在后台自动进行相关处理,对初学者来说,这个方式往往让他们比较想不通,总感觉我的数据应该在SDE表空间里面才能进行相关的注册,放到其他表空间里面就会自动注册或者还需要进行额外操作,这一点就多虑了,用户可以根据上面的解释进行试验。

那么针对一个表空间的多个用户来说,权限问题一方面可以使用Oracle的数据库方式,那里面有相关的权限,不过也可以使用ArcGIS的方式来赋予相关的权限。

该功能用户可以在ArcToolbox工具或者其他地方都可以找到,如果是数据的拥有者也就是使用哪个用户创建或者导入的数据,可以赋予其他用户读(select)或者写(Edit)的权限,使用这种方法也是可以进行权限的操作的。

SQL Server数据库

对Oracle数据库来说,大家使用的比较多,但是对SQL Server数据库来说,就有些问题需要注意了。可能习惯Oracle数据库的用户在使用SQL Server数据库时对数据组织也喜欢走Oracle的老路子,就是当用户安装完ArcSDE软件,Post完毕后,系统会创建一个SDE的数据库,和SDE的用户,那么用户可以向创建一个新库,然后创建新库的用户,也用Oracle的方式导入数据,数据在新库里面存储,数据信息在SDE库里面注册,这样做是可以的,但是Esri在ArcGIS9.3时就已经不推荐用户进行这样组织了,因为这样效率比较低,怎么个低法呢?不解释,用户知道就可以了。所以以上全部是废话。

看一下上面的图,对SQL Server数据库来说,如果用户是一个库的话,建议将用户数据和SDE放在一块儿,也就是直接导入到SDE库里面,如果用户是希望多个库分开存储,建议为每一个库都创建相关的SDE Schema,如下所示:

再进行创建库时,修改新的Database name,然后针对每一个Database name创建相应的ArcSDE服务,在进行数据连接时,连接哪个库,我们在Database 填上相应的名称即可。

那么再说说SQL Server的用户,SQL Server数据库默认有一个sa用户,这是操作系统级别的用户,也有SDE用户,这是第一次创建ArcSDE库创建的用户,sa用户的SDE用户都是凌驾于所有库之上的,这两个用户可以连接所有SDE的库,也就是PPT上图上所示。那么针对每一个库我们也可以创建针对这个库的用户。

下面说说怎么给SQL Server数据库创建多用户?

对 SQL Server创建用户来说,只需要安装向导来创建即可,但是我也接到用户的咨询,在创建完新用户之后,可以使用新用户进行连接,但是往新用户里面导入相关数据会出现如下的一个错误:

出现这个错误的原因是:在创建新用户的时候,我们不能使用SDE或者DBO的架构,要在SDE数据库下或者拥有SDE Schema的数据库下来创建该用户的架构,然后选择该架构即可。

如上图所示:我想在SDE数据库中再创建一个除Sde外的其他用户,比如aaa,那么我首先要创建一个aaa的架构。

然后创建的aaa用户所在架构修改为aaa的架构即可。

详细参考:http://blog.csdn.net/linghe301/archive/2011/02/14/6183962.aspx

下面说明一下SQLServer导入数据的命名方式:数据库名.用户名.图层名,如下所示:

中间的名称为SDE,说明是SDE用户导入的,中间的名称为DBO,说明是Sa用户或者其他用户但是拥有sysadmin的权限,其他就是普通用户自己导入的。

-------------------------------------------------------------------------------------------------------

QQ一群: 78773981

QQ二群: 225989940
Blog: http://blog.csdn.net/linghe301
Weibo: http://www.weibo.com/linghe301

-------------------------------------------------------------------------------------------------------