Ci sarebbero vari modi per risolvere la questione, l'ideale sarebbe usare stored procedure se tu sai scrivere codice T-SQL o PLSQL, comunque in linea di massima dovresti crearti innanzitutto una lista di tutti i campi del tuo DB che non siano di sistema, poi potresti eseguire delle select su ciascuno di essi:
ipotizzo che tu stia usando sqlserver 2005 e che tu abbia raggruppato le tue tabelle sotto lo schema_table = 'Prodotti'
allora un modo per avere la lista di tutti i campi di tutte le tabelle raggruppate sotto lo schema_table = 'Prodotti' è:
SELECT Table_name, Column_name
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_SCHEMA = 'Prodotti'
quindi fai un ciclo (se il risultato precedente lo memorizzi in una tab temporanea è meglio) sui risultati ottenuti dove eseguirai la query:
DECLARE @NumElem INT
SELECT @NumElem = COUNT(Prodotti.Table_name.Column_name)
FROM Prodotti.Table_name
IF @NumElem > 0 -- vuol dire che il campo è vuoto e
BEGIN
--lo memorizzo
END
ELSE
BEGIN
-- lo scarto e ti puoi anche risparmiare questo ELSE
END
in linea di massima questo è un procedimento abbastanza generico,
il tutto ovviamente può essere ottimizzato lanciando una stored procedure che ti ritorna automaticamente una tabella contenente il nome del campo vuoto e della tabella a cui appartiene.
Ciao e buon lavoro
Leonardo Miglietta