2010-07-28 39 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

相關問題