用C#写一个简单的数据同步Windows服务(二)
本文主要介绍已经写好的数据同步Windows服务的部署说明。
一、 部署包
至少包括*.exe可执行文件、*.exe.config配置文件、Install.bat安装脚本、Uninstall.bat卸载脚本四个文件。
二、 配置项
配置文件的配置项说明:
1. 配置文件的appSettings标签下保存本服务常用且必需的配置项。
2. log项为日志文件的存放路径(绝对路径,下同),如配置的文件夹不存在,服务启动时将尝试自动创建目录。日志文件按天自动创建,名称为年月日格式,如“2018_06_13.log”。
3. fromdatabase项为源数据库即中间库的连接参数。本项目中为SQL Server 2005数据库,则其连接参数可为以下三种方式之一:
1) 集成的Windows身份验证模式
server=[IP].[Instance];database=[database];integrated security=SSPI
2) Windows身份验证模式
server=[IP].[Instance];database=[database];uid=[uid];pwd=[pwd]
3) SQL Server身份验证模式
data source=[IP].[Instance];initial catalog=[catalog];user id=[user id];pwd=[pwd]
以上连接参数中,IP即目标服务器的IP地址,Instance为数据库实例名,database、catalog为数据库名,uid、user id为登录的用户名,pwd为密码。
4. todatabase项为目标数据库的连接参数。本例中连接的为SDE的表空间,则只须将Data Source、User ID、Password项替换为实际的SDE连接参数即可。
5. fromtable项为源数据库的表名。
6. totables项为目标数据库的表名(即要素类FeatureClass名称),多个不同的表名之间以英文半角逗号隔开。
7. interval为同步的时间间隔,即每隔多久执行一次数据同步服务(单位为秒)。如未配置或配置有误,则默认按照每3秒同步一次处理。
三、 同步过程
服务的执行流程即同步过程如下:
1. 服务启动,执行一次同步服务,根据参数连接源数据库和目标数据库。
2. 同步时,先查询源数据库(中间库)指定表中的未同步数据,取得其规划地块编号、征地总成本、造地总成本、售地总成本字段。
3. 如规划地块编号不为空,则遍历目标数据库的目标表,查询是否有相同编号的地块。如存在,则写入征地、造地、售地总成本字段。
4. 所有源数据库的未同步数据同步完成后,将其标记为已同步状态。
5. 关闭源数据库、目标数据库连接,结束同步。
四、 安装与卸载
1. 修改服务安装与卸载文件,将其指向实际的*.exe文件路径(不能包含中文)。
2. 以管理员身份运行安装脚本Install.bat文件,服务将自动执行注册,注册完成后自动启动。
3. 服务正常运行时,可在Windows服务管理器中看到该服务项(名称:CostMonitor)。
4. 不需要该服务时,可以管理员身份运行卸载脚本Uninstall.bat文件执行服务卸载。
5. 修改任何配置项时,均须重启服务以使配置生效。
五、 日志
同步过程将保存到日志文件中,可通过日志文件查看每次同步的数据条数。