美文网首页
sql server 不能修改id 指定id问题 重建id那些事

sql server 不能修改id 指定id问题 重建id那些事

作者: 吉凶以情迁 | 来源:发表于2023-09-05 15:17 被阅读0次

    强制设置id

    当对数据进行了删除操作,又想恢复回来,却发现id无法改回来
    当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'xxx' 中的标识列插入显式值。
    提示很清晰,按操作进行

    select * from XXX;
    SET IDENTITY_INSERT XXX ON;
    
     INSERT INTO XXX(id,)
    VALUES ('6');
     SET IDENTITY_INSERT X OFF;
    

    当然,update是不行的,只能用insert的方式插入到指定id

    重建索引

    这主要是解决 如 1-500000的id数据删掉了,插入总是很大的数值的情况,这想起了当年200几年的时光,那时候论坛id是很酷的事情,超级管理员1号的id是1000,很牛逼的样子,我后面也自己搞了一个c#站,同样也有id的困扰,于是直接重建了id,这样他们就自动从小到大重新分配了。

    在SQL Server中,要重置索引,通常是通过重新创建索引来实现的。以下是一些重置索引的常见方法:

    使用ALTER INDEX语句重建索引:

    您可以使用ALTER INDEX语句来重建一个特定的索引。以下是一个示例:

    ALTER INDEX [IndexName] ON [TableName] REBUILD;
    

    alter index id on xxx rebuild

    在上面的语句中,[IndexName]是要重建的索引的名称,[TableName]是包含索引的表的名称。执行此语句将删除并重新创建指定的索引。

    使用SQL Server Management Studio (SSMS):

    如果您更喜欢使用图形界面来管理索引,您可以使用SQL Server Management Studio (SSMS) 来重建索引。以下是如何在SSMS中重建索引的步骤:

    a. 打开SSMS并连接到您的数据库服务器。

    b. 在“对象资源管理器”中,展开数据库,然后展开“表”节点,找到包含要重建索引的表。

    c. 右键单击表,选择“任务” > “重新生成”。

    d. 在弹出的“重新生成索引”向导中,选择要重建的索引,然后按照向导的步骤进行操作。

    使用T-SQL脚本重建所有索引:

    如果您想一次性重建表的所有索引,可以使用以下T-SQL脚本:

    USE [YourDatabaseName];
    EXEC sp_MSforeachtable @command1="print '?' DBCC DBREINDEX ('?', ' ', 80)";
    

    这个脚本会循环遍历数据库中的每个表,并使用DBCC DBREINDEX命令来重建每个表的索引。

    请注意,重建索引可能会导致数据库锁定和性能影响,因此在生产环境中谨慎使用。最好在非生产环境中进行测试,并在维护窗口或低负载时执行。另外,如果只是希望重新整理索引而不是完全重建,可以考虑使用ALTER INDEX语句中的REORGANIZE选项,这不会删除索引。

    相关文章

      网友评论

          本文标题:sql server 不能修改id 指定id问题 重建id那些事

          本文链接:https://www.haomeiwen.com/subject/ttehvdtx.html