Je voudrais interroger le nom de toutes les colonnes d'une table. J'ai trouvé comment le faire dans :
Mais j'ai besoin de savoir : *Comment cela peut-il être fait dans Microsoft SQL Server* (2008 dans mon cas) ?
Vous pouvez obtenir ces informations et bien plus encore en interrogeant les [vues du schéma d'information][1].
Cet exemple de requête :
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'
peut être effectuée sur tous ces objets de la base de données :
[CHECK_CONSTRAINTS][2]
[COLUMN_DOMAIN_USAGE][3]
[COLUMN_PRIVILEGES][4]
[COLUMNS][5]
[CONSTRAINT_COLUMN_USAGE][6]
[CONSTRAINT_TABLE_USAGE] [7]
[DOMAIN_CONSTRAINTS] [8]
[DOMAINES] [9]
[KEY_COLUMN_USAGE] [10]
[PARAMÈTRES] [11]
[CONTRAINTES_RÉFÉRENTIELLES] [12]
[ROUTINES] [13]
[ROUTINE_COLUMNS] [14]
[SCHÉMAS] [15]
[CONTRAINTES_DE_TABLE] [16]
[PRIVILÈGES_TABLE] [17]
[TABLES] [18]
[VIEW_COLUMN_USAGE] [19]
[VIEW_TABLE_USAGE] [20]
[VIEWS] [21]
[1] : http://msdn.microsoft.com/en-us/library/aa933204%28SQL.80%29.aspx [2] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/check-constraints-transact-sql [3] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/column-domain-usage-transact-sql [4] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/column-privileges-transact-sql [5] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/columns-transact-sql [6] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/constraint-column-usage-transact-sql [7] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/constraint-table-usage-transact-sql [8] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/domain-constraints-transact-sql [9] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/domains-transact-sql [10] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/key-column-usage-transact-sql [11] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/parameters-transact-sql [12] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/referential-constraints-transact-sql [13] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/routines-transact-sql [14] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/routine-columns-transact-sql [15] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/schemata-transact-sql [16] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/table-constraints-transact-sql [17] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/table-privileges-transact-sql [18] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/tables-transact-sql [19] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/view-column-usage-transact-sql [20] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/view-table-usage-transact-sql [21] : https://docs.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/views-transact-sql
Vous pouvez utiliser la procédure stockée sp_columns qui renvoie les informations relatives à toutes les colonnes d'une table donnée. Vous trouverez plus d'informations ici [http://msdn.microsoft.com/en-us/library/ms176077.aspx][1].
[1] : http://msdn.microsoft.com/en-us/library/ms176077.aspx
Vous pouvez également le faire par une requête SQL. Une chose comme celle-ci devrait vous aider :
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
Ou une variation serait :
SELECT o.Name, c.Name
FROM sys.columns c
JOIN sys.objects o ON o.object_id = c.object_id
WHERE o.type = 'U'
ORDER BY o.Name, c.Name
Cela permet d'obtenir toutes les colonnes de toutes les tables, classées par nom de table, puis par nom de colonne.