在凌晨2点自动执行脚本?

时间:2010-07-28 12:39:53

标签: sql-server-2008

我希望每天凌晨2点执行此过程。此外,我想将日期参数传递给过程。假设今天是2010年7月28日,那么我想通过7月27日凌晨2点到程序。这样我希望在7月27日上午2:00之后插入的所有记录都应该在其他表中备份。这是我的程序。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Alter PROCEDURE spBackupRows
(
    @Date datetime
)
AS
BEGIN

    Declare @ItemId int, @ItemName varchar(100), @Description varchar(50), @ItemCreatedDateTime datetime

    Declare myCursor Cursor FOR
        Select * from tblItems Where ItemCreatedDateTime > @Date

    Open myCursor

    Fetch Next From myCursor INTO @ItemId,@ItemName,@Description,@ItemCreatedDateTime

    while @@FETCH_STATUS = 0
    Begin

        INSERT INTO tblBackUpData
        (ItemId,ItemName,Description,ItemCreatedDateTime)
        Values (@ItemId,@ItemName,@Description,@ItemCreatedDateTime)

        Fetch Next From myCursor INTO @ItemId,@ItemName,@Description,@ItemCreatedDateTime

    End

    Close myCursor
    Deallocate myCursor

END
GO

我面临的问题是如何自动触发此程序?并将datetime参数传递给程序?

提前致谢:)

4 个答案:

答案 0 :(得分:7)

How to: Schedule a Job (SQL Server Management Studio)

  
      
  1. 在对象资源管理器中,连接到SQL Server数据库引擎的实例,然后展开该实例。
  2.   
  3. 展开SQL Server代理,展开“作业”,右键单击要计划的作业,然后单击“属性”。
  4.   
  5. 选择“计划”页面,然后单击“新建”。
  6.   
  7. 在“名称”框中,键入新计划的名称。
  8.   
  9. 如果您不希望计划在创建后立即生效,请清除已启用复选框。
  10.   
  11. 对于“计划类型”,请选择以下选项之一:

         
        
    • 在SQL Server代理服务启动时,SQL Server代理开始启动作业时,单击“自动启动”。
    •   
    • 每当CPU空闲时单击“启动”,以便在CPU达到空闲状态时启动作业。
    •   
    • 如果要重复运行计划,请单击“重复发生”。要设置定期计划,请在对话框中填写“频率”,“每日频率”和“持续时间”组。
    •   
    • 如果您希望计划仅运行一次,请单击“一次”。要设置一次性计划,请在对话框中完成一次性事件组。
    •   
  12.   

答案 1 :(得分:1)

您可以使用SQL Server代理每隔午夜安排一个作业,然后您可以使用该令牌(DATE)

http://msdn.microsoft.com/en-us/library/ms175575.aspx

EXEC spBackupRows DATEADD(hour, -22,  $(ESCAPE_NONE(DATE)))

假设你安排工作@午夜

答案 2 :(得分:1)

为此,您应该创建一个计划和作业,how to

答案 3 :(得分:-1)

您可以使用SQL Server代理每隔午夜安排一个作业,然后您可以使用该令牌(DATE)

http://msdn.microsoft.com/en-us/library/ms175575.aspx

相关问题