You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server中查询含IDENTITY列的所有表(无需遍历sys.columns)

如何在SQL Server中快速检索含IDENTITY列的表名

嘿,这个需求完全可以实现,而且根本不用去遍历sys.columns里的所有列——SQL Server早就为我们准备了更高效的系统视图来处理这类场景!

直接用sys.identity_columns就搞定了,这个视图专门存储所有带有IDENTITY属性的列的元数据,我们只需要把它和sys.tables关联,就能轻松筛选出包含IDENTITY列的表:

SELECT DISTINCT 
    t.name AS TableName
FROM 
    sys.tables t
INNER JOIN 
    sys.identity_columns ic ON t.object_id = ic.object_id
ORDER BY 
    TableName;

为什么这个方法更优?

  • 不用扫描sys.columns的全部数据,只针对IDENTITY列的记录进行关联,性能上会高效很多,尤其是在数据库表和列数量较多的情况下。
  • 如果还需要获取IDENTITY列的具体信息(比如列名、种子值、增量值),可以直接从sys.identity_columns里取,比如:
SELECT 
    t.name AS TableName,
    ic.name AS IdentityColumnName,
    ic.seed_value AS Seed,
    ic.increment_value AS Increment
FROM 
    sys.tables t
INNER JOIN 
    sys.identity_columns ic ON t.object_id = ic.object_id
ORDER BY 
    TableName;

这样就能精准、高效地拿到你想要的结果啦!

内容的提问来源于stack exchange,提问作者user3569267

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:36:57