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