我想在表中重新设置标识列,但不在当前正在使用的数据库中重新设置。
这有效:
use database;
DBCC CHECKIDENT ('table', reseed, 0);
但是,我想做这样的事情:
DBCC CHECKIDENT (database.[dbo].table, reseed, 0); -- works not
答案 0 :(得分:2)
EXEC database..sp_executesql N'DBCC CHECKIDENT(''dbo.table'', reseed, 0);';
甚至:
DECLARE @t SYSNAME = N'dbo.table';
EXEC database..sp_executesql
N'DBCC CHECKIDENT(@t, reseed, 25);',
N'@t SYSNAME', @t;
此外,如果该表为空并且没有任何FK引用或其他限制,您可以更轻松地使用...
TRUNCATE TABLE database.dbo.table;
......恰好也重新调整了IDENTITY
列。
答案 1 :(得分:0)
如何使用EXEC执行USE和CHECKIDENT?
EXEC('USE database;DBCC CHECKIDENT (''dbo.table'', reseed, 0);')