我重新设置了这样的标识列:
EXEC sp_MSforeachtable "DBCC CHECKIDENT ( '?', RESEED, 0)"
如果表中没有标识,查询会抛出错误。但是我仍然需要为数据库中具有标识的所有表重新设置标识。 (如果没有身份,不要抛出错误)
答案 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打印了错误消息,请与系统管理员联系。