我希望每天凌晨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
参数传递给程序?
提前致谢:)
答案 0 :(得分:7)
How to: Schedule a Job (SQL Server Management Studio)
- 在对象资源管理器中,连接到SQL Server数据库引擎的实例,然后展开该实例。
- 展开SQL Server代理,展开“作业”,右键单击要计划的作业,然后单击“属性”。
- 选择“计划”页面,然后单击“新建”。
- 在“名称”框中,键入新计划的名称。
- 如果您不希望计划在创建后立即生效,请清除已启用复选框。
- 醇>
对于“计划类型”,请选择以下选项之一:
- 在SQL Server代理服务启动时,SQL Server代理开始启动作业时,单击“自动启动”。
- 每当CPU空闲时单击“启动”,以便在CPU达到空闲状态时启动作业。
- 如果要重复运行计划,请单击“重复发生”。要设置定期计划,请在对话框中填写“频率”,“每日频率”和“持续时间”组。
- 如果您希望计划仅运行一次,请单击“一次”。要设置一次性计划,请在对话框中完成一次性事件组。
答案 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)