Ik ben aan het kijken naar het maken van een basis-ORM (puur voor de lol), en vroeg me af of er een manier is om de lijst met tabellen in een database en ook de velden voor elke tabel terug te geven?
Hiermee wil ik in staat zijn om door de resultatenset (in C#) te lopen en dan voor elke tabel in de resultatenset zeggen, doe dit (bijvoorbeeld gebruik reflectie om een klasse te maken die xyz zal doen of bevatten).
Vervolgens, wat zijn enkele goede online blogs voor SQL Server? Ik weet dat deze vraag echt gaat over het gebruik van systeem-SP’s en databases in Sql Server, en ik ben ok met algemene vragen, dus ik ben geïnteresseerd in enkele blogs die dit soort functionaliteit behandelen.
Bedankt
Antwoord 1, autoriteit 100%
Is dit wat u zoekt:
WEERGAVE VAN OBJECTCATALOGUS gebruiken
SELECT T.name AS Table_Name ,
C.name AS Column_Name ,
P.name AS Data_Type ,
P.max_length AS Size ,
CAST(P.precision AS VARCHAR) + '/' + CAST(P.scale AS VARCHAR) AS Precision_Scale
FROM sys.objects AS T
JOIN sys.columns AS C ON T.object_id = C.object_id
JOIN sys.types AS P ON C.system_type_id = P.system_type_id
WHERE T.type_desc = 'USER_TABLE';
WEERGAVE INFORMATIESCHEMA gebruiken
SELECT 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;
Referentie: Mijn blog – http://dbalink.wordpress.com/2008/10/24/querying-the-object-catalog-and-information-schema-views/
Antwoord 2, autoriteit 21%
Tafels ::
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
kolommen ::
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
of
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='your_table_name'
Antwoord 3, autoriteit 7%
Krijg een lijst van alle tabellen en velden in de database:
Select *
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_CATALOG Like 'DatabaseName'
Krijg een lijst met alle velden in de tabel:
Select *
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_CATALOG Like 'DatabaseName' And TABLE_NAME Like 'TableName'
Antwoord 4, autoriteit 4%
Ik heb een paar oplossingen getest en geconstateerd dat
Select *
From INFORMATION_SCHEMA.COLUMNS
geeft u de kolominformatie voor uw HUIDIGE/standaarddatabase.
Select *
From <DBNAME>.INFORMATION_SCHEMA.COLUMNS
, zonder de < en >, geeft u de kolominfo voor de database DBNAME.
Antwoord 5, autoriteit 4%
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
Antwoord 6, autoriteit 2%
Je andere ingebouwde vriend hier is het systeem sproc SP_HELP.
voorbeeld gebruik ::
sp_help <MyTableName>
Het levert veel meer informatie op dan je echt nodig hebt, maar er wordt aan ten minste 90% van je mogelijke vereisten voldaan.