1. 简介
ArcGIS for Sever 从10.1 推出了一个非常实用的功能,就是注册数据源(register data store)。注册数据源,就是将当前是数据路径赋予arcgis for server的账户(安装的时候,默认为arcgis)的相关的操作权限,通过注册数据源,发布服务时候,数据将不会拷贝到服务器端,而任然停留在当前位置。服务器端服务使用的数据和客户端端发布服务使用的数据是同一份数据。
如果不注册数据源将会出现编号24011的高级警告, “data source is not register with the server and data will be copied to the server”。此如忽略该警告,发布服务时数据将拷贝到服务器上,默认存放于 C:\arcgisserver\directories\arcgissystem\arcgisinput\服务名\extracted\v101下。根据mxd数据本身的存储形式不同,在服务器端存放的形式也不同。如数据来自文件夹的shapefile文件,则以shapefile的形式在服务器端存储。如果来自与filegeodatabase 或者sde中的数据,则在服务器端以filegeodatabase的形式存在。
通过上面的描述可知,不注册数据源服务器端服务使用的数据和客户端发布服务的数据是两份数据。且将客户端的数据拷贝到服务器端,需要时间消耗和网络传输带宽,当数据量特别大的时候,拷贝的过程就更不可取了。更新客户端的数据,服务器端的数据并不会更新,则服务也无法更新。
2. 注册数据源的方式:
在服务属性编辑对话框中
通过双击分析结果对话框,在弹出的对话中,输入data store的名字。
3. 常见失败的场景:
注册data store 失败的所有的场景归根结底都是由于arcgis for server的账户对当前发布服务的mxd文档的数据路径不具有读写权限。
注册文件夹失败
当注册的文件夹与arcgis for server在同一台机器上的时候,通常不会出现失败。通常容易失败的是,文件夹和arcgis for server不在同一台机器上。,在这样的场景下,需要:
在文件夹所在的机器上如果没有arcgis for server的账户,新将一个arcgis for server 账户,且需要账户和密码与安装arcgis for server 的机器上的账户密码一致。
将数据文件夹,共享给步骤一创建的账户
将共享路径中的数据加载到arcmap中发布服务。
NB:上面的三个步骤中,最容易出现错误的是步骤三。这个时候,容易使用绝对物理路径而不是共享的UNC路径。如数据文件存放在d:\folder\test.shp,且folder共享了,通过\server\folder的UNC路径,arcgis for server的机器可以访问到。但是发布服务或者注册数据源的时候注册的是d:\folder 这就导致注册成功,但是数据还是要拷贝到服务器上的现象的出现。
注册数据库
arcgis for server,可以注册多种数据库。使用比较多的是oracle和sqlserver。注册数据库通常失败的原因通常是由于客户端安装的问题。
从10.1后,arcgis 连接数据库默认的方式采用直接连接,这就需要通过数据库客户端去连接数据。由于desktop 是32的应用程序,arcgis for server是64位的应用程序,这就导致,如果desktop连接数据需要安装32位客户端,server连接数据库需要64位客户端
1. 当server和数据库在同一台机器上,而desktop在另一台机器上
只需要在desktop是机器上安装32位客户端。server的机器上,无需安装客户端,因为数据库文件中包含连接数据的相关文件。如果是oracle需要确保Path设置了oracle home 目录,而sqlserver安装64或者32位客户端都可(本人测试是可以的,但是官方要求是32位)
NB:当server和数据库在同一台机器上的时候,如果先安装server,再安装数据库,则会出现注册失败,通常重启arcgis for server的服务即可。(该问题曾经坑死我了)
2. server,desktop和数据库三种在不同的服务器上
desktop采用32位客户端,server 64位数据库客户端段,如是oralce需要path路径中配置各自配置oralce client home。而sqlserver无需配置路径,且发现都安装64位客户端都可。
3. server,desktop和数据库都在同一台机器上
只需要安装32为客户端用desktop连接数据,而64位客户端文件在数据库安装文件中包含,oralce只需要在Path中配置oralce home。而sqlserver无需安装客户端,数据库文件中包含。
sqlserver注册数据源 http://resources.arcgis.com/en/help/main/10.2/index.html#/Registering_a_SQL_Server_database_with_the_server/015400000613000000/
总结
总结还是一句话,注册数据源失败,绝大部分是数据读写权限的问题