SQLSERVER truncate table之后是否会重置表的自增值
SQLSERVER truncate table之后是否会重置表的自增值
今天清理业务库数据的时候,开发人员说可以使用truncate table把两个表的所有数据清理掉
这两个表都有自增ID,都做了表分区,单表200GB,使用 SELECT IDENT_CURRENT('') 的时候两个表
的当前自增值是3000012,这两个表几乎是一模一样的,除了一两个字段不一样
我执行两个SQL语句把两个表都truncate掉,然后就忘记了收缩数据库和重置种子值
由于分区函数的最后一个值是2000000,那么后插入的数据都会积聚在最后一个文件组
1、重置种子值,让数据重新利用第一个文件组
2、修改分区方案,使用 split range,向分区函数添加新值
虽然不重置也可以,但是如果使用 split range,向分区函数添加新值工作量就大了,为了不增加工作量当然重置种子值最好
因为当时太忙,继续搬数据库去了
下班回来才想起这件事,还需要收尾工作,马上远程到业务数据库的机器,使用下面的SQL语句查看分区情况
--分区情况
SELECT pat.* ,
fg.[groupname] AS '分区方案对应的文件组名称' ,
patsch.name '当前分区函数对应的分区方案'
FROM sys.destination_data_spaces AS dds
INNER JOIN sysfilegroups AS fg ON dds.[data_space_id] = fg.[groupid]
INNER JOIN ( SELECT $PARTITION.Fun_New_PostLog_Id(id) AS 分区编号 ,
MIN(id) AS Min_value ,
MAX(id) AS Max_value ,
COUNT(id) AS 记录数
FROM dbo.PostLog
GROUP BY $PARTITION.Fun_New_PostLog_Id(id)
) AS pat ON pat.[分区编号] = dds.[destination_id]
INNER JOIN sys.partition_schemes AS patsch ON dds.[partition_scheme_id] = patsch.data_space_id
ORDER BY pat.[分区编号]
发现两个表的新插入的数据都放在第一个文件组,并且自增id又从1开始了

马上测试一下,结果发现truncate table真的重置了种子,以前是知道的,不过以前用到truncate的情况很少
USE [test]
GO
CREATE TABLE truncatetabletestidentity (id INT IDENTITY(1,1),NAME NVARCHAR(20))
GO INSERT [dbo].[truncatetabletestidentity]
SELECT 'ni' UNION ALL
SELECT 'we' UNION ALL
SELECT 'pp' SELECT * FROM [dbo].[truncatetabletestidentity]
GO TRUNCATE TABLE [dbo].[truncatetabletestidentity]
接下来收缩数据库,磁盘空间又“多出“了450GB空间,磁盘预警消失了~
如有不对的地方,欢迎大家拍砖o(∩_∩)o
2014-4-7补充:
在MSDN里面提到
DBCC CHECKIDENT (Transact-SQL)
|
DBCC CHECKIDENT (table_name, RESEED,new_reseed_value ) |
将当前标识值设置为 new_reseed_value。 如果自从创建表以来未在表中插入任何行,或者已使用 TRUNCATE TABLE 语句删除所有行,则在运行 DBCC CHECKIDENT 之后插入的第一行将使用 new_reseed_value 作为标识。 否则,插入的下一行将使用new_reseed_value + 当前增量值。 如果该表不为空,那么将标识值设置为小于标识列中的最大值的数字时,将会出现下列情况之一:
|

SQLSERVER truncate table之后是否会重置表的自增值的更多相关文章
- SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- MySql清空表的方法介绍 : truncate table 表名
清空某个mysql表中所有内容 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate tabl ...
- 【转载】delete table 和 truncate table 的区别
使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where] 将XS表中的所有行数据删除 delete XS 执行完后,发现X ...
- truncate table 和delete
delete table 和 truncate table 使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where< ...
- delete table 和 truncate table
delete table 和 truncate table 使用delete语句删除数据的一般语法格式: delete [from] {table_name.view_name} [where< ...
- Oracle 使用TRUNCATE TABLE删除所有行
若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速.有效的方法.TRUNCATE TABLE 与不含 WHERE 子句的 DELETE 语句类似.但是,TRUNCATE TABLE ...
- TRUNCATE TABLE 与 DELETE (转)
TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作.TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似:但是,TRUNCATE TABLE 速度更快, ...
- TRUNCATE TABLE (Transact-SQL)
删除表中的所有行,而不记录单个行删除操作. TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似:但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源 ...
- SQL Server数据恢复准备之TRUNCATE TABLE理解
SQL Server数据恢复准备之TRUNCATE TABLE理解 转自:https://blog.51cto.com/aimax/2142553 易语随风去关注0人评论6717人阅读2018-07- ...
随机推荐
- Devexpress VCL Build v2014 vol 15.2.3 发布
2016年第一个版本,继续修补. New Major Features in 15.2 What's New in VCL Products 15.2 Breaking Changes To lear ...
- React学习之一:React初探
一,React简介 React是由Facebook和Instagram开发的一套创建用户界面的JavaScript库.许多人认为React是MVC中的V. React创建的目的是为了:构建数据随时会改 ...
- (转)jQuery中的extend()方法
本文转自:http://www.xiabingbao.com/jquery/2015/05/30/jquery-extend 原文的排版要比这里美观很多,建议去原文查看.本文仅仅作为个人的mark,方 ...
- Windows service无法删除怎么办?
自己用c#创建的windows service, 安装后,执行installutil /u 状态变成disable,却删除不了.删除的时候提示"The specified service ...
- VS2008中调试dll
1.运行dll实例时,会直接弹出一个小框: 选择可拉起这个dll的exe运行就可以调试了 2.以后每次都会直接运行了,要重新选择程序,弹出上面的框,需要在project-->debugging- ...
- ZTSD_008_1表没有某订单数据,无法回写交期
ZTSD_008_1表没有某订单数据,无法回写交期, 取系SAP组检查执行此RFC:ZFM_FP_025_1 为什么没有将数据导进来 select * from SAPSR3.ZTSD_008_1@S ...
- 关于form验证的处理片断
public virtual void SignIn(s_User user, bool createPersistentCookie) { var now = DateTime.UtcNow.ToL ...
- NLPP-03-Exercises
<PYTHON自然语言处理>第3章 处理原始文本 更多更复杂有关处理HTML内容 http://www.crummy.com/software/BeautifulSoup/ 3.11 深入 ...
- C#中dataGridView用法集
SqlConnection conn = new SqlConnection('Server=(local);DataBase=test;User=sa;Pwd=sa'); SqlDataAdapte ...
- Python:print显示颜色
显示颜色格式:\033[显示方式;字体色;背景色m......[\033[0m] ------------------------------------------- --------------- ...