2012-07-12 96 views
0

我试图强制SQL Server每小时调用一次所需的存储过程。SQL Server:以编程方式安排

我已经仔细阅读以下条款:

他们是相当大的,而不是非常直截了当。

任何人都可以证实,下面的SQL代码是适合我的任务:

USE msdb ; 
GO 
EXEC dbo.sp_add_job 
    @job_name = N'Exec RemoveOldCsvImportData' ; 
GO 
EXEC sp_add_jobstep 
    @job_name = N'Exec RemoveOldCsvImportData', 
    @step_name = N'execute stored procedure', 
    @subsystem = N'TSQL', 
    @command = N'exec RemoveOldCsvImportData', 
    @retry_attempts = 5, 
    @retry_interval = 5 ; 
GO 
EXEC dbo.sp_add_schedule 
    @schedule_name = N'RunOnce', 
    @freq_type = 4, 
    @freq_interval = 1, 
    @freq_subday_type = 0x8, 
    @freq_subday_interval = 1, 
    @active_start_time = 233000 ; 
USE msdb ; 
GO 
EXEC sp_attach_schedule 
    @job_name = N'Exec RemoveOldCsvImportData', 
    @schedule_name = N'RunOnce'; 
GO 
EXEC dbo.sp_add_jobserver 
    @job_name = N'Exec RemoveOldCsvImportData'; 
GO 
+1

您使用的是哪个版本的SQL Server? – Josien 2012-07-12 09:40:47

+2

我喜欢一个名为'RunOnce''的日程安排,这个安排实际上是定期运行的。 – 2012-07-12 10:41:10

回答

2

除了中间的虚假USE msdb ;,它看起来不错,并且它成功运行。为什么不尝试运行它?如果它不是您想要的,您可以再次删除该作业。

0

在我的SQL Server实例上执行这段代码给了我一个时间表“在23:30:00和23:59:59之间每隔1小时发生一次”,我认为那不是你想要的。

任何人都可以证实,下面的SQL代码是适合我的任务

答:不,这是不对的。

就像Ben Thul和David M在他们的回答中所暗示的那样:您可以尝试一下代码并检查作业,看看它是否满足您的要求,通过右键单击来创建新作业会更好在JobsSQL Server Agent和选择New Job...

3

我的建议是通过向导创建作业,编写脚本,然后将其用于脚本。创建一个像你想要做的工作是一个神秘的过程。你最终会得到它,但如果这是一次性的,向导路线将为你节省很多时间。

0

您可以从sql作业代理生成脚本并以单向方式运行它。另一种方法是使用向导中的“窗口任务计划”生成任务。对于那些去我的电脑 - >右键单击它并选择管理选项。它会打开服务器管理器。现在转到配置选项并选择任务计划程序。您可以在操作选项卡中的窗体的右侧创建任务。它是从这里创造工作的非常简单的方法。其实我也用我的项目需求相同的东西。

因为我只是创建一个任务,每天在12:00执行一个存储过程一次。因此,如果不运行该脚本,并且在脚本中执行所有操作,您也可以采用相同的方法。

相关问题