重新安装sql server标识列

时间:2011-06-30 23:06:04

标签: sql-server-2008

我重新设置了这样的标识列:

EXEC sp_MSforeachtable "DBCC CHECKIDENT ( '?', RESEED, 0)"
如果表中没有标识,

查询会抛出错误。但是我仍然需要为数据库中具有标识的所有表重新设置标识。 (如果没有身份,不要抛出错误)

2 个答案:

答案 0 :(得分:6)

所有表格都是空的吗?

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql = @sql + N'DBCC CHECKIDENT(''' 
    + QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
    + '.' + QUOTENAME(OBJECT_NAME([object_id])) 
    + ''', RESEED, 0);' + CHAR(13) + CHAR(10)
    FROM sys.columns
    WHERE is_identity = 1;

PRINT @sql;
-- EXEC sp_executesql @sql;

答案 1 :(得分:0)

要将所有表重新设置为0,并在一行中包含标识列:

exec sp_MSforeachtable 'dbcc checkident(''?'', reseed, 0)', @whereand='and exists(select 1 from sys.columns c where c.object_id = o.id and is_identity = 1)'
  

检查身份信息:当前标识值'33798',当前列值'0'。   DBCC执行完成。如果DBCC打印出错误消息,请与系统管理员联系。   检查身份信息:当前标识值'3359',当前列值'0'。   DBCC执行完成。如果DBCC打印了错误消息,请与系统管理员联系。