Demétrio's profileDemétrio Silva - Sql Ser...BlogListsNetworkMore ![]() | Help |
|
|
July 13 Alterar identity várias tabelas Galera, As vezes precisamos gerar scripts para alterar o identity de várias tabelas, por exemplo, ambientes replicados onde identitys do publicante e assinante precisam ser diferentes. Abaixo, mostro um script de como fazer isso: SET NOCOUNT ON GO --declaro uma table que será usada para guardar o nome das tabelas que possuem campos identitys declare @tabelas table (idx int identity(1,1), tabela varchar(100)) insert into @tabelas (tabela) select distinct t.name from sys.tables t inner join sys.columns c on c.object_id = t.object_id where t.is_ms_shipped = 0 and c.is_identity = 1 order by name declare @inicio int, @fim int declare @command varchar(1000) --variável que deve ser setada para o valor do novo identity declare @ident_aux int = 15000 select @inicio = 1, @fim = max(idx) from @tabelas --faço o while ao invés de um cursor e monto o comando while @inicio <= @fim begin select @command = 'dbcc checkident ( ' + tabela + ', ' + 'reseed' + ', ' + cast( @ident_aux as varchar(10) ) + ' ) ' from @tabelas where idx = @inicio --imprimo o comando para que o mesmo possa ser executado posteriormente print( @command ) print('GO') set @inicio = @inicio + 1 end Simples não? Mas é muito útil para alteração de identitys em várias tabelas. Abraços TrackbacksThe trackback URL for this entry is: http://demetriosqlserver.spaces.live.com/blog/cns!1D50CF1AC3A02CDE!264.trak Weblogs that reference this entry
|
|
|