1

我是 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 版本提供。请帮忙。

4

2 回答 2

3

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

要考虑的一种替代方法是使用 Windows 的 AT 调度程序。这是一篇 SO 文章,讨论了一个很好的命令行调用来进行备份: 什么是备份 SQL 服务器数据库的简单命令行程序或脚本?

于 2013-05-06T18:39:03.247 回答
1

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

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

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

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

这是一个例子:

关联

于 2013-05-06T18:39:59.040 回答