SQLServer 清空某个库所有表

本文介绍了一种使用SQL语句批量清空数据库中所有表数据的方法,通过创建临时表存储表名,然后循环执行truncate table语句实现。注意,此操作会清除表内所有数据,请谨慎使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select @n=1
insert #temp(tablename) SELECT distinct sobjects.name
FROM sysobjects sobjects
WHERE sobjects.xtype = 'U'

select @rows = @@rowcount
while @n <= @rows
begin

    declare @tablename nvarchar(50)
    select @tablename = (select tablename from #temp where id = @n)
    --允许将显式值插入表的标识列中 ON-允许  OFF-不允许
    --exec ('set identity_insert '+@tablename+' ON')--打开
    exec ('TRUNCATE TABLE  '+@tablename)
    print(@tablename)
    select @n = @n + 1
end
go

转载于:https://www.cnblogs.com/DragonStart/p/9976232.html

SQL Server 的缓存对于性能优化非常重要,但是有时候为了测试查询的实际性能、排除内存因素干扰等目的,我们需要清理 SQL Server 缓存。 ### 清理缓冲池(Buffer Pool) 如果你想清除所有的数据页缓存: ```sql DBCC DROPCLEANBUFFERS; ``` 这条命令会清空数据缓冲区,并移除所有干净的缓冲区。注意这会影响整个实例的数据读取性能,因为之后的所有请求都需要从磁盘加载数据,直到再次被缓存起来。 ### 清理计划缓存 如果你想要刷新掉存储过程及查询执行计划相关的缓存信息可以使用下面命令: ```sql DBCC FREEPROCCACHE; ``` 此操作将删除所有现有的查询执行计划,这意味着后续对这些查询的操作需要重新编译生成新的执行计划。 请注意,在生产环境中随意地进行这样的操作可能会造成短暂的应用响应时间变慢以及额外CPU资源消耗,因为它强制让SQL Server丢弃现有有效的缓存并创建新缓存条目。因此通常只建议在开发环境或特定诊断场景下使用上述命令。 另外还有一种更细粒度的方式就是仅清除某个数据库内部的对象对应的缓存而不是全局范围内的全部内容,例如: - **针对单个数据库**:`DBCC FLUSHPROCINDB (database_id); ` (这个语法用于SQL Server 2016及以上版本) 这样做的好处是不会影响到其他数据库里的已缓存的内容,只是释放指定的相关部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值