Struttura tabella tramite query

giovedì 09 novembre 2006 - 16.51

S4turno Profilo | Junior Member

SQL Server 2000.
Sto cercando di leggere la struttura di una qualsiasi tabella tramite query (per capirci, le stesse che vengono visualizzate facendo doppio click sul nome di una tabelle su enterprise manager).
Ho provato a fare una select sulla vista "INFORMATION_SCHEMA.COLUMNS", ma non trovo tutte le informazioni che mi servono. Mi manca la dimensione dei campi (dalla vista ho l'informazione sulla precisione, che non è proprio la stessa cosa), sapere se un campo è identità oppure no e trovare le PK (almeno per adesso).
Ho provato a vedere come è definita questa vista, su che tabelle estrae i dati e vedere se trovo queste informazioni li, ma inizio a perdermi, perchè non è molto comoda.

Qualcuno sa come fare?

AndreaKpr Profilo | Senior Member

Ciao, ti allego una form in Vb6
che ciò che ti serve

S4turno Profilo | Junior Member

ti ringrazio per la pronta risposta!

Il problema è che io non conosco il vb, e dato che nel codice la stringa della select viene creata dinamicamente non riesco a capire come la costruisce...

lbenaglia Profilo | Guru

>Il problema è che io non conosco il vb, e dato che nel codice
>la stringa della select viene creata dinamicamente non riesco
>a capire come la costruisce...

Ciao S4turno,

come avrai capito non esiste una tabella di sistema contenente il comando CREATE TABLE come lo è la syscomments per gli altri oggetti.
Il consiglio che ti posso dare è di lanciare una sessione di Profiler per catturare il codice generato da Enterprise Manager quando fai doppio click sul nome di una tabella e prendere spunto da esso.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

S4turno Profilo | Junior Member

Grazie mille!

Non conoscevo il funzionamento di SQL Profiler. Ho trovato la chiamata a due store procedure che fanno al caso mio: sp_MShelpcolumns N'[Table]' e sp_MStablekeys N'Table]'.

C'è un modo adesso di usare la tabella risultato di una SP per fare una query nidificata? Non riesco a trovare la sintassi giusta.

lbenaglia Profilo | Guru

>C'è un modo adesso di usare la tabella risultato di una SP per
>fare una query nidificata? Non riesco a trovare la sintassi giusta.

Definisci una tabella temporanea avente la stessa struttura del result set restituito dalla procedura ed utilizza la seguente sintassi per popolarla:

INSERT #tabella
EXEC storedprocedure

A questo punto puoi fare tutte le query nidificate che vuoi

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5