Переместить identity на последнее значение id

ВНИМАНИЕ! Скрипт работает только для клиентов, у которых НЕТ репликации

Заходим в SQL Server и делаем бэкап

Далее выполняем скрипт:

set nocount on;
 declare @id int;
 declare @maxid dt_id;
 declare @name varchar(250);
 declare @i int;
 declare @sql nvarchar(max);
 declare cur cursor local forward_only static for
 select o.id
 , o.name
 from sysobjects o
 join
 syscolumns c on (c.id = o.id)
 and (c.name = 'id')
 and (c.status & 0x80 = 0x80)
 where o.type = 'u'
 order by o.name;
 open cur;
 fetch next from cur into @id, @name;

set @i = 0;
 while (@@fetch_status = 0)
 begin
 set @i = @i + 1;
 print str(@i) + ' ' + str(@id) + ' ' + @name;
 set @sql = N'select @maxid = max(id) from ' + @name;
 exec sp_executesql @sql, N'@maxid int out', @maxid out;
 if @maxid is not null
 dbcc checkident(@name, reseed, @maxid);
 fetch next from cur into @id, @name;
 end;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *