在SQL Server Express版中创建作业?

时间:2014-02-28 18:34:59

标签: sql sql-server scheduled-tasks sql-server-express

我想在sql server express edition中安排一些工作。挖了一下后,我得到了一些帖子:

How to run a stored procedure every day in SQL Server Express Edition?

How to create jobs in SQL Server Express edition

How to run a stored procedure every day in SQL Server Express Edition?

我知道Sql Agent需要在sql server中安排作业,但由于SQL Server express没有附带SQL Agent所以我必须选择其他替代方案。

我得到了this,这表明了很好的替代方案。在@Thomas Bratt的回答中,他使用无限循环 waitfor(Transact-SQL)

来自@Thomas Bratt的答案的代码

我想知道此代码的性能影响(如果有的话)。

...
while 1 = 1
begin
    waitfor time @timeToRun
    begin
        execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure];
    end
end 
...

并在same post @Raj更多提示另一个替代方案,即Windows Scheduler,因此最好使用 Windows Scheduler waitfor(Transact-SQL )无限循环 ??

2 个答案:

答案 0 :(得分:1)

我建议改为创建Windows预定任务,并将其与SqlCmd实用程序结合使用,以按计划运行任务。

如果你需要创建一个Windows Task程序,那就有很多.NET包装器(例如http://taskscheduler.codeplex.com/

作为替代方案,您可以在自己的代码中使用QUARTZ.NET调度程序。使用它,您可以安排任何.NET类执行。

答案 1 :(得分:1)

是的,“sp_procoption”用于自动执行过程。但在我看来,这些程序会有一些逻辑来对所有数据库执行一次设置更新和/或配置更改。如果您的SQL作业也适用于类似的目标,那么您应该考虑这个选项,但要记住这些过程不能有任何参数。同样来自while循环的性能影响,您将始终将此视为SQL服务器的后台运行作业,但大部分时间都在睡眠/等待时间。实际的性能影响取决于它在运行时所执行的任务,而不是在等待时。

底线:如果我计划或期望在不久的将来对此SQ作业进行更多增强,我不会通过将其用作作业调度程序来重载“sp_procoption”功能。相反,我会考虑其他用户建议的更灵活的选项。