sql - 如何让SQL Server 2012删除过期记录并每天检查

标签 sql sql-server sql-server-2012

我是 SQL Server 新手,正在学习。我有一个每月的 Membership 表和一个名为 ExpirationDateTime 列。

我必须研究什么才能让我的 SQL Server 2012 每天检查过期记录并删除它们。我知道 SQL Server 有这个功能,只是想知道它叫什么,您对创建这样的东西有什么建议或技巧吗?

最佳答案

您可以首先创建如下过程:

USE [DatabaseName]
GO
/****** Object:  StoredProcedure [dbo].[sp_ProcedureName] ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO


CREATE PROCEDURE [dbo].[sp_ProcedureName]
AS

SET NOCOUNT ON

DECLARE @expirationdatetime datetime;

SET @expirationdatetime = getdate()

BEGIN
    DELETE FROM [TableName]
    WHERE Expiration < @expirationdatetime

END

创建过程后,您将需要转到对象资源管理器的底部,您将在其中看到一个选项SQL Server Agent。在其下方,您将看到另一个选项卡工作。右键单击它,然后单击“新建作业...”选项。您应该看到以下屏幕:

New Job Screen

接下来转到右侧的步骤,单击新建...在新屏幕上,输入步骤名称并将默认类型保留为 Transact-SQL 脚本(T-SQL) .

New_Job_Step

接下来转到“计划”并单击“新建...”以添加计划以每天运行新的存储过程。

Create new schedule

希望这能让您得到您所需要的!

关于sql - 如何让SQL Server 2012删除过期记录并每天检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684695/

相关文章:

sql - 数量未知的 PostgreSQL 一对多

sql - 我们可以在 ColdFusion Query-of-Query 中使用 "Case"

sql-server - 计算 hh 中的时差 :mm

sql - 向数据库中的所有表添加位掩码有用吗?

sql-server - 在表值函数中使用命名参数

mysql - SQL唯一varchar区分大小写问题

sql - 使用 SQL Server FILESTREAM GUID 作为主键

sql-server - 维护存储过程——如何在不阻塞复制的情况下删除

sql - 创建与列值出现相关的计算列

sql-server - 在新创建的 View 上获得糟糕的性能