出于我的项目的目的,我不能使用基于会话的临时表。它们需要持久但在一段时间不活动后自动删除(不执行CRUD)。这有可能吗?
答案 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,它会检查上次修改日期然后删除该表。