如何在一段时间不活动后删除表格?

时间:2016-04-13 13:34:44

标签: sql-server

出于我的项目的目的,我不能使用基于会话的临时表。它们需要持久但在一段时间不活动后自动删除(不执行CRUD)。这有可能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用SQL Server Agent安排调用存储过程的作业来完成此任务。 (How to Schedule a Job?

如何识别自X时间以来未更新的表?

使用此查询:

SELECT OBJECT_NAME(OBJECT_ID) AS TableName, last_user_update,
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID('DatabaseName')
AND OBJECT_NAME(OBJECT_ID) LIKE '%%' -- Here is the template name for your tables
AND DATEDIFF(MINUTE, last_user_update, GETDATE()) > 10 -- Last updated more than 10 minutes

既然你要删除表,你可以使用你想要的任何逻辑DROP它们(Cursor,While,Procedure)

答案 1 :(得分:0)

当然可以。将其写入您的程序层。

自动 - 在SQL Server中:否。好吧,你冷静地使用代理来定期启动脚本。

跟踪“不活跃”意味着什么 - 你的责任。

答案 2 :(得分:0)

您需要在某处保存此表的修改日期(例如,在同一个表或另一个特殊表中),然后您可以创建job,它会检查上次修改日期然后删除该表。