Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 查询以获取列元数据、键和索引_Sql Server - Fatal编程技术网

Sql server 查询以获取列元数据、键和索引

Sql server 查询以获取列元数据、键和索引,sql-server,Sql Server,如何以以下格式获取表或视图的列元数据 column_name column_data_type column_data_length index key ----------------------------------------------------------------------------- column1 int 4 CLUSTERED PRIMARYKEY colu

如何以以下格式获取表或视图的列元数据

column_name  column_data_type   column_data_length  index          key
-----------------------------------------------------------------------------
column1      int                     4              CLUSTERED      PRIMARYKEY
column2      int                     4              NONCLUSTERED   FOREIGNKEY
column3      varchar                20              NULL           NULL

很高兴你能自己解决这个问题,并为其他面临类似问题的人发布了答案。请考虑接受您的答案,通过点击灰色检查图标左边的答案。
SELECT 
    C.TABLE_SCHEMA+'.'+ C.TABLE_NAME as TableName,
    C.COLUMN_NAME as ColumnName, 
    C.DATA_TYPE as ColumnDataType,
    C.CHARACTER_MAXIMUM_LENGTH as ColumnDataTypeLength, 
    (CASE 
        WHEN K.CONSTRAINT_NAME like 'PK_%' then 'PRIMARYKEY' 
        WHEN K.CONSTRAINT_NAME like 'FK_%' then 'FOREIGNKEY' 
        ELSE NULL 
    END) as [Keys],
    (SELECT     
            i.[type_desc] 
        FROM
            [sys].[indexes] AS i 
        INNER JOIN 
            [sys].[index_columns] AS ic 
            ON i.[object_id] = ic.[object_id] 
            AND i.index_id = ic.index_id
        INNER JOIN 
            [sys].[columns] co
            ON ic.column_id = co.column_id
            AND ic.[object_id] = co.[object_id]
        WHERE 
            i.[object_id] = OBJECT_ID(C.TABLE_SCHEMA+'.'+ C.TABLE_NAME)
            AND co.name=C.COLUMN_NAME
    ) AS [Indexes]
FROM 
    INFORMATION_SCHEMA.COLUMNS C LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE K
       ON   C.COLUMN_NAME=k.COLUMN_NAME 
            AND C.TABLE_NAME=K.TABLE_NAME
WHERE C.TABLE_SCHEMA+'.'+ C.TABLE_NAME =@tableName 
ORDER BY C.ORDINAL_POSITION ASC