Script para dropar objetos com nome em comum
Hoje gostaria de postar um script bem simples mas que pode ser muito útil quando se necessita dropar um lote de objetos que tenham uma determinada "caracteristica" em comum. O exemplo pode não resolver seu problema, mas certamente servirá de idéia se você realmente estiver precisando.
Bom, no exemplo que estou postando, tenho na tabela GEUSUARI os códigos dos usuários do sistema. Quero apagar todas as tabelas que estejam variando o nome por código de usuário. Vejamos como fica o script para resolver esse probleminha...
Valeu!
Bom, no exemplo que estou postando, tenho na tabela GEUSUARI os códigos dos usuários do sistema. Quero apagar todas as tabelas que estejam variando o nome por código de usuário. Vejamos como fica o script para resolver esse probleminha...
use SUABASE
--primeiramente temos um cursor que irá ler todos os objetos do MSSQL
--levando em consideraçao a restricao imposta na clausula where
declare tabelas_cursor cursor
for
select name
from sysobjects
where xtype = 'U'
and right(name,3) in (select cd_usuario from GEUSUARI with(nolock) where usuario <> 'SUPERVISOR')
order by name
open tabelas_cursor
declare @objeto sysname
fetch next from tabelas_cursor
into @objeto
--laço while que irá ler todos os objetos retornados do cursor
while @@fetch_status <> -1
begin
--executa SQL dinâmico
exec('drop table ' + @objeto+'')
fetch next from tabelas_cursor
into @objeto
end
print 'Todas as tabelas de usuário foram apagadas.'
close tabelas_cursor
deallocate tabelas_cursor
Bom, fazendo isso todas as tabelas que tenham no final do seu nome um código de usuário do sistema foram dropadas.Valeu!
Comentários
Postar um comentário