Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SQL Server中删除N天以前的临时表_Sql_Sql Server_Optimization_Temp Tables - Fatal编程技术网

如何在SQL Server中删除N天以前的临时表

如何在SQL Server中删除N天以前的临时表,sql,sql-server,optimization,temp-tables,Sql,Sql Server,Optimization,Temp Tables,我们有100个进程正在创建临时表,而不是删除它们。许多构建都在生产中。我们希望SQL查询在N=2天后删除这些内容,并安排它。有办法吗?下面是从旧的临时表中迭代的示例代码,但是如果我运行它,它将无法删除这些表 USE tempdb; DECLARE @SQL VARCHAR(MAX) set @SQL = ( SELECT STUFF( ( SELECT ' DROP TABLE ' + cast(name as varchar(200))

我们有100个进程正在创建临时表,而不是删除它们。许多构建都在生产中。我们希望SQL查询在N=2天后删除这些内容,并安排它。有办法吗?下面是从旧的临时表中迭代的示例代码,但是如果我运行它,它将无法删除这些表

USE tempdb;
DECLARE @SQL VARCHAR(MAX) 

set @SQL = 
(
    SELECT   STUFF(
    (
        SELECT ' DROP TABLE ' + cast(name as varchar(200))
        FROM tempdb.sys.tables where create_date < '2019-12-10 00:00:00.000'
        FOR XML PATH('')
    ),1, 1, '')
);

PRINT @SQL;

当连接关闭并回收时,引擎会丢弃一个临时表

因此,我们不需要删除表,因为它可以由引擎本身自动完成。但是,作为一种最佳实践,手动删除创建该表的脚本中的表将有助于Sql server决定垃圾收集

请查看以下最新版本的SQL Server

您的示例代码是否在固定日期有效?你可以添加一些像DATEADDd,-2,GETADATE这样的东西,让它充满活力,兄弟!这意味着:在编写代码时,千万不要假设或暗示任何东西。temp和temp表在tempdb中结束,但它们是由SQL Server管理和处理的。在tempdb中创建自己的表与创建temp表不同。不要那样做。@Nick.McDermaid我已经编辑了问题的正确性。而且它不适用于较旧的临时表。甚至SA用户对tempdb的访问也被拒绝。