Pour éviter les lignes en double pour certaines colonnes, utilisez user_type_id au lieu de system_type_id.
SELECT
c.name 'Column Name',
t.Name 'Data type',
c.max_length 'Max Length',
c.precision ,
c.scale ,
c.is_nullable,
ISNULL(i.is_primary_key, 0) 'Primary Key'
FROM
sys.columns c
INNER JOIN
sys.types t ON c.user_type_id = t.user_type_id
LEFT OUTER JOIN
sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id
LEFT OUTER JOIN
sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id
WHERE
c.object_id = OBJECT_ID('YourTableName')
Remplacez simplement YourTableName
avec votre nom de table réel - fonctionne pour SQL Server 2005 et versions ultérieures.
Si vous utilisez des schémas, remplacez YourTableName
par YourSchemaName.YourTableName
où YourSchemaName
est le nom du schéma réel et YourTableName
est le nom réel de la table.