feb
28
2009
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: ASP, Database, OpenSchema, SQL, struttura database, sys.columns, sys.tables