1

我想在表中重新设置标识列,但不在当前正在使用的数据库中。

这有效:

use database;
DBCC CHECKIDENT ('table', reseed, 0);

但是,我想做这样的事情:

DBCC CHECKIDENT (database.[dbo].table, reseed, 0); -- works not
4

2 回答 2

4
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列重新播种。

于 2013-03-22T16:03:05.947 回答
1

使用 EXEC 执行 USE 和 CHECKIDENT 怎么样?

EXEC('USE database;DBCC CHECKIDENT (''dbo.table'', reseed, 0);')
于 2013-03-22T16:05:37.253 回答