it-swarm.com.de

T-SQL-Listentabellen, Spalten

In T-SQL (SQL Server 2000). Wie kann ich alle Tabellen und Spalten in einer Datenbank auflisten? Außerdem gibt es in einer separaten Abfrage eine Möglichkeit, alle Spalten zusammen mit dem Datentyp und den Einschränkungen (NULL usw.) aufzulisten. Vielen Dank.

22
user1804387

Bitte überprüfen Sie das Informationsschema .

select *
from MyDatabaseName.information_schema.columns
order by table_name, ordinal_position
57
Tim Lehner

Viele Möglichkeiten, es zu tun. Im Folgenden finden Sie einige Möglichkeiten, die Sie auflisten können:

Option 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

Option 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)

Option 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
13
Kin Shah