In T-SQL (SQL Server 2000). Come posso elencare tutte le tabelle e le colonne in un database? Inoltre, in una query separata esiste un modo per elencare tutte le colonne insieme al tipo di dati e ai vincoli (NULLS, ecc.). Grazie.Tabelle elenco T-SQL, colonne
risposta
Si prega di controllare il information schema.
select *
from MyDatabaseName.information_schema.columns
order by table_name, ordinal_position
Grazie Tim, apprezzo questo. C'è un modo per aggiungere in quale database sono assegnate le tabelle? Vedo che il catalogo è padrone. – user1804387
'usa MyDatabaseName;', quindi esegui una query. [MSDN: selezione di un database] (http://msdn.microsoft.com/en-us/library/ms180770.aspx). In alternativa, aggiungi il nome del DB alla tua clausola 'from' in normale [modalità in 4 parti] (http://msdn.microsoft.com/en-us/library/ms177563.aspx) (l'ho aggiunto alla risposta). –
L'avevo appena scoperto. Grazie ancora – user1804387
Molti modi per farlo. Qui di seguito sono un paio di modi che si possono elencare:
Opzione 1:
SELECT db_name() as DATABASE_NAME, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, ORDINAL_POSITION,
COLUMN_DEFAULT, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION, NUMERIC_PRECISION_RADIX, NUMERIC_SCALE,
DATETIME_PRECISION
FROM INFORMATION_SCHEMA.COLUMNS
Opzione 2:
DECLARE @SQL VARCHAR(8000)
SELECT @SQL = ''
SELECT @SQL = @SQL + 'UNION
SELECT ''' + name + ''' [DataBaseName], t.name [TableName], c.name [ColumnName], st.name [DataType] FROM ' + name + '..sysobjects t INNER JOIN ' + name + '..syscolumns c ON t.id = c.id INNER JOIN '+ name + '..systypes st on c.xtype = st.xtype where t.xtype = ''U'''
FROM master..sysdatabases
WHERE name IN ('databasename1', 'databaseName2') -- change here !!
SELECT @SQL = RIGHT(@SQL, LEN(@SQL)-5) + ' ORDER BY 1, 2, 3'
EXEC(@SQL)
Opzione 3:
select db_name() as database_name
,table_name = sysobjects.name
,column_name = syscolumns.name
,datatype = systypes.name
,length = syscolumns.length
from sysobjects
inner join syscolumns on sysobjects.id = syscolumns.id
inner join systypes on syscolumns.xtype = systypes.xtype
where sysobjects.xtype = 'U'
order by sysobjects.name
,syscolumns.colid
Ha hai provato qualcosa? –
Dai un'occhiata alle viste 'INFORMATION_SCHEMA' o' sysobjects', 'syscolumns' ecc. –