如何以编程方式确定索引列是 ASC 还是 DESC

use*_*970 2 sql sql-server indexing sql-server-2008

以下查询创建数据库中所有索引名称的列表,其中包含属于该索引的每一列。有人能告诉我如何确定该列是按 ASC 还是 DESC 排序的吗?

SELECT     ind.name as index_name     ,
           t.[name] as table_name     ,
           col.name as column_name     ,
           ic.index_column_id as index_column_id 
FROM [GDI-193-DEV].sys.indexes ind  
       INNER JOIN [GDI-193-DEV].sys.index_columns ic      
            ON  ind.object_id = ic.object_id and ind.index_id = ic.index_id  
       INNER JOIN [GDI-193-DEV].sys.columns col      
           ON ic.object_id = col.object_id and ic.column_id = col.column_id  
       INNER JOIN [GDI-193-DEV].sys.tables t      
           ON ind.object_id = t.object_id  
WHERE  ind.is_primary_key = 0 AND ind.is_disabled = 0 
ORDER BY      
       t.name, ind.name, ind.index_id, ic.index_column_id  
Run Code Online (Sandbox Code Playgroud)

谢谢!马特

pet*_*erm 5

sys.index_columns有一列is_descending_key

1 = 索引键列具有降序排序方向。
0 = 索引键列具有升序排序方向。
不适用于返回 0 的列存储索引。