当前位置:  开发笔记 > 编程语言 > 正文

在SQL Server上预定运行存储过程

如何解决《在SQLServer上预定运行存储过程》经验,为你挑选了5个好方法。

是否可以设置Microsoft SQL Server以定期运行存储过程?



1> Jeb..:

是的,在MS SQL Server中,您可以创建预定作业.在SQL Management Studio中,导航到服务器,然后展开SQL Server代理项,最后展开Jobs文件夹以查看,编辑和添加预定作业.


对我来说很奇怪,这个答案在去年比2008年至2013年期间得到了更多的赞成.为什么会这样?

2> Thomas Bratt..:

如果正在使用MS SQL Server Express Edition,则SQL Server代理不可用.我发现以下适用于所有版本:

USE Master
GO

IF  EXISTS( SELECT *
            FROM sys.objects
            WHERE object_id = OBJECT_ID(N'[dbo].[MyBackgroundTask]')
            AND type in (N'P', N'PC'))
    DROP PROCEDURE [dbo].[MyBackgroundTask]
GO

CREATE PROCEDURE MyBackgroundTask
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- The interval between cleanup attempts
    declare @timeToRun nvarchar(50)
    set @timeToRun = '03:33:33'

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

-- Run the procedure when the master database starts.
sp_procoption    @ProcName = 'MyBackgroundTask',
                @OptionName = 'startup',
                @OptionValue = 'on'
GO

一些说明:

值得在某处编写审计条目,以便您可以看到查询实际运行.

服务器需要重新启动一次以确保脚本第一次运行.

一个相关的问题是:如何在SQL Server Express Edition中每天运行存储过程?



3> Ciaran Arche..:

是的,如果您使用SQL Server代理.

打开企业管理器,转到您感兴趣的SQL Server实例下的Management文件夹.在那里您将看到SQL Server代理,在其下方您将看到"作业"部分.

在这里,您可以创建一个新工作,您将看到需要创建的步骤列表.创建新步骤时,可以指定实际运行存储过程的步骤(键入TSQL脚本).选择数据库,然后为命令部分输入如下内容:

exec MyStoredProcedure

这是概述,如果您需要任何进一步的建议,请回到此处.

[我实际上以为我可能会先进入这个,男孩我错了:)]



4> percebus..:

可能不是您正在寻找的答案,但我发现仅使用Windows Server任务计划程序更有用

您可以直接使用该命令 sqlcmd.exe -S "." -d YourDataBase -Q "exec SP_YourJob"

甚至创建一个.bat文件.所以你甚至可以按需点击2次任务.

这也是在这里找到的



5> Joel Coehoor..:

我将添加一件事:我在那里,我们曾经有过一堆每天晚上都要运行的批处理作业.但是,我们正在逐渐远离使用在Windows计划任务中安排的客户端应用程序,这些任务将启动每项工作.至少有三个原因:

    我们有一些控制台程序也需要每晚运行.这样,所有计划任务都可以在一个地方.当然,这会造成单点故障,但如果控制台工作没有运行,我们无论如何都会在第二天失去一天的工作.

    启动作业的程序从服务器捕获打印消息和错误,并将它们写入我们所有批处理过程的公共应用程序日志中.它使得使用sql作业进行日志记录变得更加简单.

    如果我们需要升级服务器(我们希望尽快这样做),我们不需要担心将工作转移.只需重新指出应用程序一次.

这是一个真正简短的VB.Net应用程序:如果有人感兴趣,我可以发布代码.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有