在其他数据库中重新设置标识列(不在当前正在使用的数据库中)

时间:2013-03-22 16:01:01

标签: sql-server sql-server-2008

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

这有效:

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

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

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

2 个答案:

答案 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);')