【问题标题】:SQL Server Job doesn't runSQL Server 作业不运行
【发布时间】:2013-04-30 10:46:30
【问题描述】:

我是 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 当我执行这个脚本时,系统时间是 21hrs23minutes。因此,从那时起,该作业应该在 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 版本提供。请帮忙。

【问题讨论】:

  • 如您所说,您没有 SQL Server 代理,那么您为什么希望作业能够运行?
  • 是的,SQL Server 代理作业非常有用,并且具有不错的错误行为和日志记录,但您确实需要 SQL Server 代理。

标签: sql sql-server database


【解决方案1】:

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

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

您可以以适中的价格获得“开发者版”,但不能部署到开发者版。

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

这是一个例子:

LINK

【讨论】:

  • +1 我不知道将哪个标记为正确答案,因为两者都是正确的。谢谢你。我不知道,我必须承认我的无知/愚蠢,如果没有 SQL Server 代理,作业将无法运行。
  • 无知是可以的,这就是论坛的目的。愚蠢不是在问问题......所以不涉及愚蠢,恕我直言。
【解决方案2】:

@Pondlife 和@criticalfix(在上面的 cmets 中)是正确的。 SQL Agent 是 SQL Server 的调度程序。如果没有 SQL 代理,您的计划作业将无法运行。

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

【讨论】:

  • +1 谢谢。我不知道,我必须承认我的无知/愚蠢,如果没有 SQL Server 代理,作业将无法运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多