Cautare tabela in toate bazele

Configurare noua (How To)

Situatie

Pentru situatiile in care avem nevoie sa cautam rapid o tabela pe un server sql si nu stim in care baza se afla, am facut o procedura care primeste ca si paramentru numele unei tabele si cauta acea tabela in toate bazele de pe serverul sql. Daca gaseste tabela, returneaza baza pe care se afla acea tabela, data la care a fost creata tabela si data ultimei modificari a tabelei. Procedura nu tine cont daca numele tabelei este scris cu litere mici sau mari.

Solutie

create proc BD_SearchTable_prc
@tabela varchar(max)

as

begin

declare @tabela_upper varchar(max)

set @tabela_upper = upper(@tabela)

declare @script as nvarchar(2000)
if exists(select 1 from sysobjects where name=’tab_alltables’) drop table tab_alltables
create table tab_alltables (db nvarchar(1000), tab nvarchar(1000),create_date datetime, modify_date datetime)

declare c cursor for
select ‘insert into tab_alltables (tab,db,create_date,modify_date) select name,”’+name+ ”’,create_date, modify_date from ‘ +name+’.sys.tables ‘ from master..sysdatabases where dbid>4
open c
fetch c into @script
while @@fetch_status=0
begin
exec (@script)

print @script
fetch c into @script
end
close c deallocate c

select * from tab_alltables where upper(tab) like @tabela_upper
end

Tip solutie

Permanent
Etichetare:

Voteaza

(13 din 37 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?