1、DBCC CHECKIDENT
检查指定表的当前标识值,如有必要,还对标识值进行更正。
语法
DBCC CHECKIDENT
( 'table_name'
[ , { NORESEED
| { RESEED [ , new_reseed_value ] }
}
]
)
参数
'table_name'
是要对其当前标识值进行检查的表名。表名必须符合标识符规则。有关更多信息,请参见使用标识符。指定的表必须包含标识列。
NORESEED
指定不应更正当前标识值。
RESEED
指定应该更正当前标识值。
new_reseed_value
是在标识列中重新赋值时要使用的值。
例子:
DBCC CHECKIDENT (jobs, RESEED, 30) 只是指定应该更正当前标识值,并不修改标识种子值。
我们可以通过事件探查器跟踪在企业管理器中修改表的标识种子值时,SQL Server自身的处理机制:
1、创建与原表结构相同的新表tmp_原表名,自增列的标识种子值为在企业管理器中修改之后的标识种子值
2、如果原表中存在数据:
SET IDENTITY_INSERT ON
INSERT INTO tmp_原表名 select * from 原表名
SET IDENTITY_INSERT OFF
3、drop table 原表名
4、将tmp_原表名重命名为原表名
2、查询数据库中所有表的大小
--查询数据库中所有表的大小
--writer:zjcxc
==================================================================
-- sp_MSforeachtable
-- 这个系统存储过程有7个参数:
-- @command1 nvarchar(2000), --第一条运行的T-SQL指令
-- @replacechar nchar(1) = N'?', --指定的占位符号
-- @command2 nvarchar(2000) = null, --第二条运行的T-SQL指令
-- @command3 nvarchar(2000) = null, --第三条运行的T-SQL指令
-- @whereand nvarchar(2000) = null, --可选条件来选择表
-- @precommand nvarchar(2000) = null, --在表前执行的指令
-- @postcommand nvarchar(2000) = null --在表后执行的指令
--==================================================================
create table #tb(表名 sysname,记录数 int
,保留空间 varchar(10),使用空间 varchar(10)
,索引使用空间 varchar(10),未用空间 varchar(10))
insert into #tb exec sp_MSForEachTable 'EXEC sp_spaceused ''?'''
select * from #tb
go
drop table #tb