Alterar identity várias tabelas

Publicado: 13 de julho de 2009 em T-SQL
Tags:
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

         

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s