对于安装的SqlExpress的服务器或服务不够,无法创建Sql作业的服务器上使用
由于代码比较简单,就简化点说:
1、在VS下新建一个Windows服务项目。里面自动添加了一个名称为Service1的windows 服务。(直接创建Windows运用程序项目的可以在项目上右键添加Windows服务)
2、添加App.Config配置文件(根据自己需要)
strCon:Sql连接字符串 logPath:日志文件路径 dbPath:备份文件存放路径
3、添加System.Configuration引用
4、在Service1中添加代码:
备注:备份系统需要对数据库用户添加权限:grant backup database to 用户名
数据库操作类:
5、代码编写完成后Service1视图上右键,添加安装程序。系统会添加一个名为ProjectInstaller的安装程序。里面包含两个组件
serviceProjectInstaller1和serviceInstaller1
修改serviceProjectInstaller1的属性:Account为LocalSystem,该属性其他枚举值说明
枚 举 值 | 说 明 |
LocalService | 充当本地计算机上非特权用户的账户,该账户将匿名凭据提供给所有远程服务器 |
LocalSystem | 具有高特权级别的账户 |
NetworkService | 提供广泛的本地特权的账户,该账户将计算机的凭据提供给所有远程服务器 |
User | 由网络上特定的用户定义的账户。如果为ServiceProcessInstaller.Account成员指定 User,则会使系统在安装服务时提示输入有效的用户名和密码,除非为Service ProcessInstaller实例的Username和Password这两个属性设置值 |
ServiceProcessInstaller控件属性及说明
属 性 | 说 明 |
Account | 获取或设置运行该服务应用程序时所使用的账户类型 |
HelpText | 已重写。获取为服务安装选项显示的帮助文本 |
Parent | 获取或设置包含该安装程序所属的集合的安装程序 |
Password | 获取或设置与运行服务应用程序时所使用用户账户关联的密码 |
Username | 获取或设置运行服务应用程序时将使用的用户账户 |
选中ServiceInstaller控件,在“属性”窗口中,将其StartType属性设置为Manual
该属性其他枚举值说明:
值 | 说 明 |
Automatic | 指示服务在系统启动时将由(或已由)操作系统启动。如果某个自动启动的服务依赖于某个手动启动的服务,则手动启动的服务也会在系统启动时自动启动 |
Disabled | 指示禁用该服务,以便它无法由用户或应用程序启动 |
Manual | 指示服务只由用户(使用“服务控制管理器”)或应用程序手动启动 |
ServiceInstaller控件属性
属 性 | 说 明 |
DisplayName | 指示向用户标识服务的友好名称 |
HelpText | 获取安装程序集合中所有安装程序的帮助文字 |
ServiceName | 指示系统用于标识此服务的名称。此属性必须与要安装的服务的ServiceBase. ServiceName相同 |
ServicesDependedOn | 指示为使该服务能够运行而必须正在运行的服务 |
StartType | 指示启动此服务的方式和时间 |
Description | 指示服务的说明 |
最后生成解决方案,到这里服务已经创建完毕。
接下来需要使用命令窗口进行安装:
可以使用Visual Studio下的Visual Studio 2005命令提示工具,也可以使用Microsoft .NET Framework SDK v2.0下的SDK命令提示 工具
安装卸载命令:
installutil 服务物理路径.exe
installutil /u 服务物理路径.exe
好了。就是这么简单。需要的话,不妨试试!
注:有可能有的服务器没有上述两个命令工具,那一般的命令行工具能不能行呢,这个问题留着另外一篇说明。:)