Ristrutturando un sito web dinamico fatto tempo fa ho avuto bisogno di ricontrollare tutto il database.
La pigrizia però mi ha impedito di accedere allo spazio su cui e caricato e spulciare una dopo l’altra le tabelle, per cui ho ho scritto un programma che presentasse, su una sola pagina ASP, le tabelle con relativi campi e proprietà.

Per scrivere questo programma ci sono due possibilità: la prima è usare il metodo OpenSchema dell’oggetto Ado Connection, l’altra è sfruttare le tabelle di sistema del database: sys.columns e sys.tables.

Qui vedremo come svilupparlo usando sys.tables e sys.columns. Per una giuda sul medoto OpenSchema si veda qui..


L’idea di base è quella di presentare tutti i record del recordset, raggruppati per codice tabella e con un layout di questo tipo:
nometabella1
campo1.1
campo1.2
campo1.3
nometabella 2
campo2.1
campo2.2
campo2.3

<%
‘Apro il recordset creando una join tra le due tabelle.
Set rcs_tables = Server.CreateObject(”ADODB.Recordset”)
rcs_tables.ActiveConnection = miastringa ’stringa di connessione al DB
rcs_tables.Source = “select * from sys.tables left outer join sys.columns on sys.tables.object_id = sys.columns.object_id; ”
rcs_tables.CursorType = 2
rcs_tables.CursorLocation = 2
rcs_tables.LockType = 3
rcs_tables.Open()

‘Procediamo con un ciclo a rottura di codice
do until (rcs_tables.EOF or rcs_tables.bof) ‘presenta i record fino all’ultimo
’scrivo il nome della tabella sulla rottura del codice cod_table<>cod_tableold
if cod_table<>cod_tableold then response.write(rcs_tables.fields(0).value)
’scrive il nome del campo
response.Write(rcs_tables.fields(25).value & “
“)
cod_tableold = cod_table
rcs_tables.movenext
if not (rcs_tables.EOF or rcs_tables.bof) then cod_table=rcs_tables.fields(1).value
loop
rcs_tables.Close() ‘chiudo il recordset
%>

Questa è la versione più semplice dello script. Con piccole modifiche si possono presentare anche le proprietà relative alla tabella e ai campi.

Tags: , , , , , ,

Leave a Reply