テーブルにID列を再シードしたいのですが、現在使用中のデータベースにはありません。
これは機能します:
use database;
DBCC CHECKIDENT ('table', reseed, 0);
しかし、私はこのようなことをしたいと思います:
DBCC CHECKIDENT (database.[dbo].table, reseed, 0); -- works not
テーブルにID列を再シードしたいのですが、現在使用中のデータベースにはありません。
これは機能します:
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);')