仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 857|回复: 7
打印 上一主题 下一主题

[学习教程] 使用SQL SERVER功课主动启动盘算机服务

[复制链接]
活着的死人 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-16 14:09:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
支持多线程,充分利用CPU资源成绩缘故原由:
由于本人地点的项目必要一个服务来撑持运转,但在完成服务代码后发明该服务在一些电脑上其实不能主动运转,找了良多天的bug,也未找出成绩地点。终极想到一个折衷的办法,就是在SQLSERVER中增加一个功课,然后在该功课中启动服务,并设置该功课为SQLSERVER服务启动时运转。如许就能够办理服务不克不及主动启动的成绩了。

在该功课顶用到六个体系存储历程:
1,sp_add_job--增加由SQLServerAgent服务实行的新功课。
2,sp_add_jobstep--在功课中增加一个步骤(操纵)。
3,sp_update_job--变动功课的属性。
4,sp_add_jobschedule--创立功课企图。
5,sp_add_jobserver--在指定的服务器中,以指定的功课为方针。
6,sp_add_category--将指定的功课、警报或操纵员种别增加到服务器中。

以上体系存储历程详细用法请参看MSDN匡助文档。

示例代码:
/******工具:Job[启动Custom_SERVER服务]剧本日期:09/14/201111:13:01******/
BEGINTRANSACTION
DECLARE@ReturnCodeINT
SELECT@ReturnCode=0
/******工具:JobCategory[[Uncategorized(Local)]]]剧本日期:09/14/201111:13:01******/
IFNOTEXISTS(SELECTnameFROMmsdb.dbo.syscategoriesWHEREname=N[Uncategorized(Local)]ANDcategory_class=1)
BEGIN

EXEC@ReturnCode=msdb.dbo.sp_add_category@class=NJOB,@type=NLOCAL,@name=N[Uncategorized(Local)]
IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

END

DECLARE@jobIdBINARY(16)
EXEC@ReturnCode=msdb.dbo.sp_add_job@job_name=N启动Custom_SERVER服务,
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N无形貌。,
@category_name=N[Uncategorized(Local)],
@owner_login_name=NSERVERAdministrator,@job_id=@jobIdOUTPUT
IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

/******工具:Step[启动Custom_SERVER服务]剧本日期:09/14/201111:13:02******/
EXEC@ReturnCode=msdb.dbo.sp_add_jobstep@job_id=@jobId,@step_name=N启动Custom_SERVER服务,
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_success_step_id=0,
@on_fail_action=2,
@on_fail_step_id=0,
@retry_attempts=5,
@retry_interval=1,
@os_run_priority=0,@subsystem=NTSQL,
@command=Nexecmaster..xp_cmdshellnetstartCustom_SERVER,
@database_name=Nmaster,
@flags=0
IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

EXEC@ReturnCode=msdb.dbo.sp_update_job@job_id=@jobId,@start_step_id=1
IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

EXEC@ReturnCode=msdb.dbo.sp_add_jobschedule@job_id=@jobId,@name=N启动Custom_SERVER服务,
@enabled=1,
@freq_type=64,
@freq_interval=0,
@freq_subday_type=0,
@freq_subday_interval=0,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20110511,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959
IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

EXEC@ReturnCode=msdb.dbo.sp_add_jobserver@job_id=@jobId,@server_name=N(local)
IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback
COMMITTRANSACTION
GOTOEndSave
QuitWithRollback:
IF(@@TRANCOUNT>0)ROLLBACKTRANSACTION
EndSave:
提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
蒙在股里 该用户已被删除
7#
发表于 2015-3-24 05:47:03 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
因胸联盟 该用户已被删除
6#
发表于 2015-3-17 09:11:30 | 只看该作者
无法深入到数据库系统层面去了解和探究
金色的骷髅 该用户已被删除
5#
发表于 2015-3-10 17:01:00 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
兰色精灵 该用户已被删除
地板
发表于 2015-3-1 09:43:11 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
只想知道 该用户已被删除
板凳
发表于 2015-2-4 20:47:07 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
冷月葬花魂 该用户已被删除
沙发
发表于 2015-1-26 16:48:56 | 只看该作者
也可谈一下你是怎么优化存储过程的?
飘飘悠悠 该用户已被删除
楼主
发表于 2015-1-18 12:17:05 | 只看该作者
我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:40

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表