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

从Access导入SQL Server后,如何保留ID的IDENTITY自增功能?

给已有数据的SQL Server表添加IDENTITY属性的方法

SQL Server不支持直接修改已存在的列来添加IDENTITY属性,系统提示需要删除重建表是符合预期的,但你不用重新从Access导入数据,通过以下步骤就能保留现有记录并完成设置:

方法一:创建临时表迁移数据

  1. 新建一个和原表结构一致的临时表,将ID列设为IDENTITY属性

    CREATE TABLE Temp_OriginalTable (
        ID INT IDENTITY(起始值,步长) PRIMARY KEY, -- 比如原表最大ID是100,就设IDENTITY(101,1)
        -- 复制原表的其他列定义,例如:
        Name VARCHAR(50),
        CreateTime DATETIME,
        -- 其余列依次列出
    )
    
  2. 开启IDENTITY_INSERT权限,将原表数据导入临时表

    SET IDENTITY_INSERT Temp_OriginalTable ON;
    INSERT INTO Temp_OriginalTable (ID, Name, CreateTime, ...)
    SELECT ID, Name, CreateTime, ... FROM OriginalTable;
    SET IDENTITY_INSERT Temp_OriginalTable OFF;
    
  3. 删除原表并将临时表重命名为原表名

    DROP TABLE OriginalTable;
    EXEC sp_rename 'Temp_OriginalTable', 'OriginalTable';
    
  4. 还原原表的索引、约束、触发器等对象(如果有)

方法二:用SELECT INTO快速重建表

这种方式更简洁,但需要后续手动补全约束和索引:

-- 创建带IDENTITY的新表并直接导入数据
SELECT 
    ID = IDENTITY(INT, 起始值,步长),
    Name,
    CreateTime,
    -- 其余列
INTO New_OriginalTable
FROM OriginalTable;

-- 替换原表
DROP TABLE OriginalTable;
EXEC sp_rename 'New_OriginalTable', 'OriginalTable';

注意事项

  • 确定IDENTITY的起始值时,要参考原表现有ID的最大值,确保后续自动生成的ID不会和现有数据冲突
  • 操作前务必备份原表数据,避免意外丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:12:15