2010-07-28 34 views
1

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

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参数到程序中?

感谢提前:)

+0

#1,没有“上午2:00午夜”在我的时钟。 #2,这属于superuse.com – KevinDTimm 2010-07-28 12:42:32

+0

为什么你想传递一个日期时间,当你可以在你的SP中使用DateAdd和GetTime/GetUTCTime函数? – spender 2010-07-28 12:46:05

+1

更换了我的手表。 – TCM 2010-07-28 12:46:56

回答

7

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

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

    • 点击自动启动。
    • 只要CPU空闲以在CPU达到空闲状态时启动作业,请单击“启动”。
    • 如果您想要计划重复运行,请点击重复发生。要设置重复计划,请完成对话框上的频率,每日频率和持续时间组。
    • 如果您希望计划仅运行一次,请单击一次。要设置一次性时间表,请完成对话框上的一次性发生组。
1

为此,您应该创建一个时间表和作业, how to

相关问题