在 SQL Server Express 版本中创建作业? [复制]

Posted

技术标签:

【中文标题】在 SQL Server Express 版本中创建作业? [复制]【英文标题】:Create jobs in SQL Server Express edition? [duplicate] 【发布时间】:2014-04-01 22:15:34 【问题描述】:

我想在 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 server 中安排作业需要 Sql Agent,但由于 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 More 中建议了另一种替代方案,即 Windows 调度程序,因此哪个更好地使用 Windows 调度程序waitfor (Transact-SQL) 与无限循环 ??

【问题讨论】:

我不完全确定如何使用 WAITFOR 方法。这似乎是合理的,但还有其他一些事情并没有真正通过“代码气味”测试。我更愿意看到一个 Windows 调度程序作业(我过去做过)。 您中了彩票并辞去目前的工作。对于支持你的立场的人来说,更有意义的是:使用专用的调度工具而不是一些本土的、简陋的脚本。如果你仍然认为你的无限循环是个好主意,那不是。 @swasheck 感谢您的建议,您能否给我看一些使用 Windows 调度程序调度作业的示例代码,我不擅长数据库。我在我的项目中使用 EntityFramework 和 c# 【参考方案1】:

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

如果您需要以编程方式创建 Windows 任务,有许多 .NET 包装器(例如 http://taskscheduler.codeplex.com/)

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

【讨论】:

这基本上是我最近自己研究同样问题时发现的。 @enderland 那么我会说去吧。不要用无限循环破解,这不值得【参考方案2】:

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

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

【讨论】:

以上是关于在 SQL Server Express 版本中创建作业? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server Express 2008 中创建新数据库并允许连接?

如何在我添加到项目中的 SQL Server Express 数据库中创建用户?

VB.NET 不在 sql server 2008 express 中创建数据库

SQL Server 2008 R2 Express三个版本有啥区别?

迁移MSSql Db - 来自SQL Server 2008 R2 Enterprise备份可以在SQL Server 2008 R2 Express版本中还原

SQL Server 2014 Express (x64),是啥版本的?express是啥意思?