SQL Server作业无法运行

时间:2013-05-06 16:17:13

标签: sql sql-server database

是SQL Server的新手,并尝试学习如何执行SQL Server作业。我在已经安装的SQL Server Express实例中从msdn执行了这个简单的例子。

USE msdb ;
GO
EXEC dbo.sp_add_job
    @job_name = N'Weekly Backup' ;
GO
EXEC sp_add_jobstep
    @job_name = N'Weekly Backup',
    @step_name = N'Set database to read only',
    @subsystem = N'TSQL',
    @command = N'ALTER DATABASE SALES SET READ_ONLY', 
    @retry_attempts = 5,
    @retry_interval = 5 ;
GO
EXEC dbo.sp_add_schedule
    @schedule_name = N'ROce',
    @freq_type = 1,
    @active_start_time = 212600 ;
USE msdb ;
GO
EXEC sp_attach_schedule
   @job_name = N'Weekly Backup',
   @schedule_name = N'ROce';
GO
EXEC dbo.sp_add_jobserver
    @job_name = N'Weekly Backup';
GO
-- Start the job
USE msdb;
GO
EXEC dbo.sp_start_job N'Weekly Backup';
GO

我已经设定了 @active_start_time = 212600 当我执行此脚本时,系统时间为21小时23分钟。所以,这项工作应该在3分钟后完成。 我等到21:30,然后检查了作业执行历史,但看不到它: 我使用这个脚本来查看作业执行的历史记录:

SELECT  sj.name, 
sja.run_requested_date, 
CONVERT(VARCHAR(12), sja.stop_execution_date-    sja.start_execution_date, 114) Duration
 FROM   msdb.dbo.sysjobactivity sja
 INNER  JOIN msdb.dbo.sysjobs sj
ON   sja.job_id = sj.job_id
WHERE   sja.run_requested_date IS NOT NULL
ORDER   BY sja.run_requested_date desc

我还尝试了从网上获得的另一个脚本:

select 
 j.name as 'JobName',
 msdb.dbo.agent_datetime(run_date, run_time) as 'RunDateTime',
 ((run_duration/10000*3600 + (run_duration/100)%100*60 + run_duration%100 + 31 ) / 60) 
     as 'RunDurationMinutes'
From msdb.dbo.sysjobs j 
INNER JOIN msdb.dbo.sysjobhistory h 
 ON j.job_id = h.job_id 
where j.enabled = 1   --Only Enabled Jobs
--and j.name = 'TestJob' --Uncomment to search for a single job
order by JobName, RunDateTime desc

但是没有列出任何职位。是作业甚至没有执行?我尝试重命名作业并重新启动它,但没有...不起作用。我没有SQL Server代理,因为它没有Express版本。请帮忙。

2 个答案:

答案 0 :(得分:2)

@Pondlife和@criticalfix(在上面的评论中)是对的。 SQL Agent是SQL Server的调度程序。没有SQL代理,您的预定作业将无法运行。

要考虑的另一种方法是使用Windows的AT调度程序。这是一篇SO文章,讨论了一个很好的命令行调用来进行备份:What is a simple command line program or script to backup SQL server databases?

答案 1 :(得分:1)

“Express”是免费版。 “工作”是您购买非免费版本时获得的功能。

因此,如果您是开发人员并且想要编写工作代码,您可以做什么?

您可以以适中的价格购买“Developer Edition”,但不能将其部署到Developer Edition上。

但您可以使用Developer Edition创建作业。

以下是一个例子:

LINK