200分求一SQL作业【SQL作业基础类】

花样小星 2011-09-01 01:27:01
之前没有接触过SQL作业的操作
只是近期有个问题需要解决,没办法不学习
希望有给力的师傅给我写一个简单的例子
以我问题为中心,写个实例给我,截图也好
麻烦了!
如果能细心帮我搞定的,出来得到此贴100分
还可以到我昨天发的帖子回话,得到100分
非常感谢
如题:
现一数据库有T_SYS_COUNT表
表中有tablename和count字段
主要用来记录某张表的流水号最大值
比如现在A表的流水号已经从1排到1000,那么对应这里就是A 1000
我现在要实现每月1号定时把T_SYS_COUNT表中name等于A的count更新为1
记住,是要定时,就算数据没有数据插入或者删除动作也要执行
我知道是用作业来实现
可是我不会,所以希望给力的朋友能帮忙贴图
以这题为例


企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句:
--你的SQL语句或存储过程
--确定
--"计划"项
--新建计划
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"重复执行"
--点"更改"来设置你的时间安排
然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行
设置方法:
我的电脑--控制面板--管理工具--服务--右键SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定

像这种复制粘贴的例子就算了
...全文
293 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
花样小星 2011-09-07
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 qldsrx 的回复:]
引用 20 楼 me_meihuo 的回复:
谢谢 试过了 我改了改,把参数写死变成无参的存储过程了。但是问题是还要写SQL作业,不然没办法执行。如果再初始化中执行,那么还是只能是星期一的时候起单,。。。。。。。。。。。。。。。。
你肯定没看懂,这个不是让你在SQL作业里执行的,而是在获取单据编号的那个存储过程中使用的(别告诉你你没用存储过程获取编号)。每次获取一个单据编号,判断下当前的序号是……
[/Quote]
不好意思,我真不是用存储过程获取编码的。哈哈 我自己搞定了,还是写了个作业
xiaodiejinghong 2011-09-03
  • 打赏
  • 举报
回复
过来学习……
querystringcom 2011-09-02
  • 打赏
  • 举报
回复
合理的数据库设计可以减少很多没必要的工作
LMAOhuaNL 2011-09-02
  • 打赏
  • 举报
回复
自己理清思路就ok了,要相信自己能写出来的
PasteSpider 2011-09-02
  • 打赏
  • 举报
回复
话说 我还是没搞懂 你是作业不会弄呢 还是SQL语句不会写。。。
花样小星 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qldsrx 的回复:]
根本不用那么麻烦,只要设计上注意下,即可解决你这个问题。

引用现一数据库有T_SYS_COUNT表
表中有tablename和count字段
我再给你加一个字段,叫MM(CHAR(4))记录序号对应的月份。

存储过程这样写:

SQL code

CREATE procedure [dbo].[GetSNO](@TABLENAME VARCHAR(50), @SNO CHA……
[/Quote]
谢谢 试过了 我改了改,把参数写死变成无参的存储过程了。但是问题是还要写SQL作业,不然没办法执行。如果再初始化中执行,那么还是只能是星期一的时候起单,。。。。。。。。。。。。。。。。
花样小星 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sgzhou12345 的回复:]
接分中.........
[/Quote]

不给我回答问题还想要分,要你个大头鬼
快溜 2011-09-02
  • 打赏
  • 举报
回复
你贴的操作步骤已经很清楚了。
qldsrx 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 me_meihuo 的回复:]
谢谢 试过了 我改了改,把参数写死变成无参的存储过程了。但是问题是还要写SQL作业,不然没办法执行。如果再初始化中执行,那么还是只能是星期一的时候起单,。。。。。。。。。。。。。。。。[/Quote]
你肯定没看懂,这个不是让你在SQL作业里执行的,而是在获取单据编号的那个存储过程中使用的(别告诉你你没用存储过程获取编号)。每次获取一个单据编号,判断下当前的序号是否在当月,如果不是就初始化下,是的话就获取+1后的序号,这个判断速度很快,可以忽略影响,所以没必要专门去写个作业初始化。
sjfbtnmcn 2011-09-01
  • 打赏
  • 举报
回复
就在“作业调度”中啊,依次设置就可以了啊
有空我告诉你详细的,该下班了,先走了哈
萧炎 2011-09-01
  • 打赏
  • 举报
回复
LZ你这个不是一两句话能说清楚的

我建议去51aspx上或者school上去下载点源码

呵呵 帮顶了
叶子 2011-09-01
  • 打赏
  • 举报
回复
SQL 作业定时执行某存储过程完成某功能
http://blog.csdn.net/maco_wang/article/details/3980517
qiaoxialiushui 2011-09-01
  • 打赏
  • 举报
回复
帮你顶顶,不过还是要自己多学学
xujun5031 2011-09-01
  • 打赏
  • 举报
回复
数据库作业,随便百度下很多的
qldsrx 2011-09-01
  • 打赏
  • 举报
回复
根本不用那么麻烦,只要设计上注意下,即可解决你这个问题。
引用
现一数据库有T_SYS_COUNT表
表中有tablename和count字段

我再给你加一个字段,叫MM(CHAR(4))记录序号对应的月份。

存储过程这样写:
CREATE procedure [dbo].[GetSNO](@TABLENAME VARCHAR(50), @SNO CHAR(4) output) as
begin
DECLARE @MM CHAR(4),@NO INT
SET @MM = SUBSTRING(convert(CHAR(8), getdate(), 112), 3,4);
begin tran
if not exists(select 1 from T_SYS_COUNT where TABLENAME = @TABLENAME)
begin
insert into T_SYS_COUNT(TABLENAME,COUNT,MM)
values(@TABLENAME,1,@MM)
set @SNO=1
end
else if not exists(select 1 from T_SYS_COUNT where TABLENAME = @TABLENAME AND MM = @MM)
begin
DELETE FROM T_SYS_COUNT WHERE TABLENAME = @TABLENAME;
insert into T_SYS_COUNT(TABLENAME,COUNT,MM)
values(@TABLENAME,1,@MM)
set @SNO=1
end
else
begin
UPDATE T_SYS_COUNT set @NO = COUNT = (COUNT+1)%10000 where TABLENAME = @TABLENAME;
SET @SNO=RIGHT('000'+@NO,4);
end
commit tran
end
GO

这是测试代码
DECLARE @SNO CHAR(4)
EXEC GetSNO 'A',@SNO OUT
PRINT @SNO
hen_ai_hen_ai_ni 2011-09-01
  • 打赏
  • 举报
回复
数据库本身的job自然是可以,不过实在不懂,用windows的计划任务吧~~~~~~~~~~~~
  • 打赏
  • 举报
回复
学习来的
花样小星 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mrwu1990 的回复:]
望着分数流口水!!可真没时间啊 !!啊!
[/Quote]

分多的是,下次帮你弄
LanDuoMan 2011-09-01
  • 打赏
  • 举报
回复
不错学习啦 取流水号
天祈 2011-09-01
  • 打赏
  • 举报
回复
望着分数流口水!!可真没时间啊 !!啊!
加载更多回复(5)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧