昨天升级了ArcGIS Server升级到了10.1,10.0时的服务需要重新搭建一遍,苦逼了3天,算搞定了。不过最老火的是在发布要素服务的时候,关于数据库注册的问题,硬是折磨了我2天....现在把遇到的问题总结一下,以便遇到和我相同问题的人有一个参考,少走一些弯路,文中也会有提到一些没有解决的问题,还希望路过的大神解决,帮助指点指点,鄙人感激不尽。
本文的工作环境:
Windows 7 64 位旗舰版
ArcGIS Server 10.1
ArcGIS Desktop 10.1
IIS 7.0
开始的时候以为10.1发布要素服务和10.0一样,需要安装ArcSDE,后来查阅资料发现不需要,数据库直连方式就可以了。
首先我来说一下发布要素服务的过程,这里依照了这篇文章:
http://blog.csdn.net/arcgis_all/article/details/8202684
按照这篇文章的过程,一步一步做,之前的过程都没有错。
不过在Analyze的时候始终出现如下错误:
SEVERITY STATUS CODE DESCRIPTION NAME TYPE DATA FRAME
High Unresolved 00090 Feature service requires a registered database Layers Data Frame Layers
尽管这里我注册了地理数据,双击错误可弹出如下注册信息:
点击查看连接属性如下所示:
查阅了半天资料,在ESRI发了求助帖,在群里也寻求了帮助,无果。琢磨了两天终于找出了解决办法:
办法一:打开Windows 服务列表,停掉ArcGIS Server,点击属性,修改其登陆身份为本地登录身份:
然后启动服务。然后在发布服务注册数据库时,在数据库连接设置中选择操作系统身份验证:
点击OK,注册链接数据库连接如下所示:
记得勾选Same as publisher database connection,勾选之后Serevr database connection的数据库认证方式即为操作系统认证。
然后点击OK。最后点击Analyze,发现错误已经没有,接着点击Publish可以发布成功。
解决方法二:
ArcGIS Server的登陆方式为ArcGIS Server Account账户:如下图所示:
不同的是注册数据库部分。
这里数据库连接设置部分依旧是操作系统认证方式
然后点击Server database connection框中的Edit,在认证类型中选择数据库认证方式,输入用户和密码,一般都是用户名都是:sde,密码为自己设定的。如下图所示:
点击OK,回到Registered Database页面,
这里上方法一不同的是:Server database connection,这里记得不要勾选Same as publisher database connection
这里的Geodata service可以勾选也可不勾选,本文中ArcGIS Server已存在,所示显示的是Geodata service显示为灰色勾选状态。
这里记得一定不要勾选Same as publisher database connection,否则会出现如下的错误:
说明:在文章开头给出的参考文中,它勾选了Same as publisher database connection,但是我在自己的机器上一直没有成功。不知道为什么希望大神指点迷津。
即表示无法ArcGIS Server无法访问数据库。
然后点击Analyze,错误解决,点击Publish发布成功。
解决方法三:
以上我们都采用的是注册数据库,这里选择注册托管数据库。过程可参考
http://blog.csdn.net/arcgis_all/article/details/8202631
这里给出很好示例。当编辑要素所在地理数据库被注册为托管数据库后,再点击Analyze,错误也会解决,点击Publish,可发布成功。
总结:
解决方法一和解决方法二中数据库被直接注册到ArcGIS Server,不同的是ArcGIS Server登陆的身份。一个是本地系统,及操作系统登录身份(Windows 身份),一个是ArcGIS Server用户身份。这里推荐ArcGIS Server Account身份登录,主要是考虑到ArcGIS Server分布式安装时,Windows 身份登录将失效。不过Windows 身份登录的安全性要比ArcGIS Server Account身份登录高一些,因为其采用了基于证书的安全机制。
这里我们还会发现Serevr database connection和 publisher database connection也有一定的区别。
在方法一种由于ArcGIS Server采用的是本地系统账户,所有Serevr database connection为操作系统认证方式。
在方法二中由于ArcGIS Server采用的是ArcGIS Server Account身份登录,所以Serevr database connection采用的是数据库认证方式。
而publisher database connection都为操作系统认证方式。
虽然publisher database connection采用数据库认证方式时,可以注册成功,但是发布要素服务时依旧提示数据库没有注册的错误。
解决方法三采用的是托管注册,这时地理数据库将Copy到ArcGIS Server,一般不推荐,因为当数据库比较大时,Copy的话会比较占空间。
以上是遇到问题的一点总结,个人觉得还是ArcGIS Server对数据库访问权限的问题,但是一直也没有搞懂其中的机制。暂时就写这么多吧!
ESRI参考文档:
http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/015400000505000000/
http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#//00sq000000m4000000
http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/01540000039r000000/
ESRI视频:
http://video.esri.com/watch/1545/registering-database-data-with-arcgis-101-for-server