最近在做GIS的一个项目,遇到了将ArcSde数据库部署在不同机器时,导致esri_sde服务无法正常启用,以及无法正常连接数据库(通过ArcSde间接连接SqlServer2005)的问题。通过查找ESRI官方资料以及SqlServer2005相关说明,终于得以解决,总结一下。
同名的数据库虽然都是用sde用户登陆,但是在不同的机器上,sde用户的标识是不一样的,这个可以通过查询得到。所以问题就在与如何解决sde用户标识的统一。分三步来做:
1、首先备份一下需要附加的数据库文件,例如xxx.mdf和xxx.ldf文件(我的是GDGMIS.mdf和GDGMIS.ldf)。在另一台机器上部署时,如果未安装过ArcSde,则需要安装一下,并且建立一个和你要附加的数据库同名的数据库(拿我的来说就是再建立一个GDGMIS数据库,但是没有任何数据),然后在该数据库上右键--任务,选择分离;
2、将含有数据的数据文件(如xxx.mdf,我的是GDGMIS.mdf),附加到当前机器上;
3、就是统一sde用户的标识问题了,这里可以写一个语句,方法如下:在附加后的数据库名上右键选择新建查询,然后写入一下代码:
Use 数据库名称 (我的是GDGMIS)
go
sp_change_users_login 'update_one','sde','sde'
然后点执行就可以了,之后就可以通过直接连接或者通过ArcCatalog来连接你附加的数据库了。
注:以上操作是以SqlServer2005和ArcSde92为基准,其他版本的操作可能会有所不同