导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

大力,邹建,马可请进。关于建一个触发器的问题。在线

zhigangsun 2003-12-26 03:33:28
我想见一个触发器,条件要求是该触发器在每个月的最后一天晚上9:00点执行。具体是这样的,公司要求财务的每个月的期末值能够在月末自动倒为下一个月的期初值。并且年末能够倒为下一年的初始值。系统最初的初始值由用户录入。从系统启用开始以后自动接转。
...全文
46 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
不过,对于你的这个问题,不建议用作业.

对于财务数据,你不能硬性规定它什么时候结账.而应该创建一个存储过程,完成月结的工作.

由用户在做完所有的数据,并检查无误后,再调用这个存储过程来完成结转的工作.
回复
--手工也行

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排
回复
--这个应该用作业:

--创建作业
exec msdb..sp_add_job @job_name='数据处理'

--创建作业步骤
declare @sql varchar(800),@dbname varchar(250)
select @sql='exec p_createxml' --数据处理的命令
,@dbname=db_name() --执行数据处理的数据库名

exec msdb..sp_add_jobstep @job_name='数据处理',
@step_name = '数据同步',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔

--创建调度
EXEC msdb..sp_add_jobschedule @job_name = '数据处理',
@name = '时间安排',
@freq_type=4, --4 每天,8 每周,16 每月
@freq_interval=1, --作业执行的天数
@freq_subday_type=0, --是否重复执行,0x1 在指定的时间, 0x4 分钟, 0x8 小时
@freq_subday_interval=1, --重复周期
@freq_recurrence_factor=1, --重复执行,则设置为1,否则设置为0
@active_start_time = 00000 --0点开始执行


回复
txlicenhe 2003-12-26
写一个存储过程来实现结转。
再用JOB来调度,不过个人觉得手工调用更好,毕竟每个月才一次。
如果用 JOB



你的数据库服务器-》企业管理器-》管理-》SQL Server 代理-》作业-》新建作业,按照要求填就可以了,在“步骤”的“命令”中填写你要执行的存储过程或语句,在“调度”里面填写什么时间执行


EXEC sp_add_job @job_name = '作业名字'


EXEC sp_add_jobstep @job_name = '作业名字',
@step_name = '步骤名子',
@subsystem = 'TSQL',
@command = 'EXEC 库名..过程名',
@retry_attempts = 5, --重试次数
@retry_interval = 5 --重试间隔

EXEC sp_add_jobschedule @job_name = '作业名字',
@name = '作业调度名字',
@freq_type = 4, -- 每天
@freq_interval = 26, --间隔
@active_start_time = 10000 --开始时间



回复
victorycyz 2003-12-26
不是用触发器,是用计划作业。
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告