повторно заполнить столбцы идентификации сервера SQL - PullRequest
4 голосов
/ 01 июля 2011

Я повторно заполнил столбцы идентификаторов следующим образом:

EXEC sp_MSforeachtable "DBCC CHECKIDENT ( '?', RESEED, 0)"

Запрос выдает ошибку, если в таблице нет идентификаторов.Но мне все еще нужно повторно заполнить идентичность для всех таблиц в базе данных, которые имеют идентичность.(И не выкидывайте ошибку, если нет идентичности)

Ответы [ 2 ]

6 голосов
/ 01 июля 2011

Все ли таблицы действительно пусты?

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql = @sql + N'DBCC CHECKIDENT(''' 
    + QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
    + '.' + QUOTENAME(OBJECT_NAME([object_id])) 
    + ''', RESEED, 0);' + CHAR(13) + CHAR(10)
    FROM sys.columns
    WHERE is_identity = 1;

PRINT @sql;
-- EXEC sp_executesql @sql;
0 голосов
/ 15 сентября 2016

Чтобы повторно заполнить все таблицы до 0, в которых столбец идентификаторов находится в одной строке:

exec sp_MSforeachtable 'dbcc checkident(''?'', reseed, 0)', @whereand='and exists(select 1 from sys.columns c where c.object_id = o.id and is_identity = 1)'

Проверка информации идентификатора: текущее значение идентификатора '33798', текущее значение столбца '0'.Выполнение DBCC завершено.Если DBCC напечатал сообщения об ошибках, обратитесь к системному администратору.Проверка идентификационной информации: текущее значение идентификатора «3359», текущее значение столбца «0».Выполнение DBCC завершено.Если DBCC напечатал сообщения об ошибках, обратитесь к системному администратору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...