Discussione:
Lista indici nel database
(troppo vecchio per rispondere)
Luigi
2004-12-09 09:17:02 UTC
Permalink
Ciao a tutti,
volevo sapere se esiste un modo per avere la lista completa degli indici
implementati in un database, e non solo tabella per tabella (come, ad
esempio, utilizzando la sp di sistema "sp_helpindex").
Grazie
Andrea Benedetti
2004-12-09 09:22:52 UTC
Permalink
Salve Luigi,
Post by Luigi
Ciao a tutti,
volevo sapere se esiste un modo per avere la lista completa degli indici
implementati in un database, e non solo tabella per tabella (come, ad
esempio, utilizzando la sp di sistema "sp_helpindex").
Grazie
HTH,
Andrea
Andrea Benedetti
2004-12-09 09:37:42 UTC
Permalink
Potresti anche crearti un'unica tabella in cui inserire i risultati
dell'istruzione che ti suggerivo nella risposta precedente.
Qualcosa come:

create table #tempIndex
(
index_name varchar(100),
index_description varchar(1000),
index_keys varchar(100)
)

insert #tempIndex
EXEC sp_MSforeachtable @command1= 'EXEC sp_helpindex ''?'''

select * from #tempIndex

drop table #tempIndex

HTH,
Andrea
Luigi
2004-12-09 09:41:04 UTC
Permalink
Grazie, funziona.
E per avere una lista di questi indici su file, in modo da poterla stampare,
è possibile?
Lorenzo Benaglia
2004-12-09 09:51:16 UTC
Permalink
Post by Luigi
E per avere una lista di questi indici su file, in modo da poterla
stampare, è possibile?
Ciao Luigi,

Se utilizzi il Query Analyzer puoi stampare direttamente l'output della
query, oppure salvarlo su file, mentre se esegui il tutto da codice,
potresti banalmente esportare l'output della query (o della tabella
tremporanea) su file utilizzando l'utility BCP.
Su questo ng troverai un sacco di post sull'utilizzo di BCP, fai una veloce
ricerca con Google Groups.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Luigi
2004-12-09 10:15:05 UTC
Permalink
Grazie Lorenzo (a agli altri), mi stampo il risultato della query (dal menu
Query).
L'utility BCP la conosco poco, e mi sembra un po' scomoda.
Mi serviva giusto per fare una piccola documentazione per il db.
Riguardo poi al passaggio Oracle -> SQL Server, i tipi di dato Number(n) li
converto in Int o bigint a seconda della grandezza di "n".
Davide Mauri
2004-12-09 12:54:25 UTC
Permalink
Se non conosci bcp puoi utilizzare questo comodo tool:

http://blogs.ugidotnet.org/nettools/archive/2004/03/31/1532.aspx
--
Davide Mauri
www.davidemauri.it
Post by Luigi
Grazie Lorenzo (a agli altri), mi stampo il risultato della query (dal menu
Query).
L'utility BCP la conosco poco, e mi sembra un po' scomoda.
Mi serviva giusto per fare una piccola documentazione per il db.
Riguardo poi al passaggio Oracle -> SQL Server, i tipi di dato Number(n) li
converto in Int o bigint a seconda della grandezza di "n".
Andrea Benedetti
2004-12-09 09:54:13 UTC
Permalink
Salve Luigi,
Post by Luigi
Grazie, funziona.
E per avere una lista di questi indici su file, in modo da poterla stampare,
è possibile?
Oppure, oltre alla risposta di Lorenzo potresti:

a) costruirti una procedura (prova sul db northwind) che torni il tuo
risultato:

create procedure up_ListIndexOnFile
AS
begin

create table #tempIndex
(
index_name varchar(100),
index_description varchar(1000),
index_keys varchar(100)
)

insert #tempIndex
EXEC sp_MSforeachtable @command1= 'EXEC sp_helpindex ''?'''

select *
from #tempIndex

end

b) lanciare da riga di comando qualcosa come:
osql -E -dNorthwind -Q"exec up_ListIndexOnFile" -oc:\listIndex.txt

A questo punto su "c" hai un file "listIndex.txt" che contiene il risultato
della query

HTH,
Andrea
Luca Bianchi
2004-12-09 09:43:53 UTC
Permalink
Post by Luigi
Ciao a tutti,
volevo sapere se esiste un modo per avere la lista completa degli
indici implementati in un database, e non solo tabella per tabella
(come, ad esempio, utilizzando la sp di sistema "sp_helpindex").
O segui la strada indicata da Andrea B. oppure interroghi la tabella
sysindexes...
Post by Luigi
Grazie
Bye
--
Luca Bianchi
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Loading...