首页 > 数据库 >SQLServer 错误: 8646,在数据库 'msdb',表 1077578877 的索引 ID 1 中找不到索引条目

SQLServer 错误: 8646,在数据库 'msdb',表 1077578877 的索引 ID 1 中找不到索引条目

时间:2024-08-14 16:19:08浏览次数:15  
标签:IX name index IXC SQLServer msdb 索引 id columns

一台非生产服务器,磁盘被打满了,刚开始以为只是正常的磁盘使用增长满了,就清理了一部分空间出来,没过一会,就又满了,排查到sqlserver的错误日志文件一直在增

 

同时查看sqlserver错误日志,大量报错日志:

[298] SQLServer 错误: 8646,在数据库 'msdb',表 1077578877 的索引 ID 1 中找不到索引条目。指示的索引已损坏,或当前的更新计划有问题。请运行 DBCC CHECKDB 或 DBCC CHECKTABLE。如果该问题仍然存在,请与产品支持人员联系。 [SQLSTATE HY000] (ConnExecuteCachableOp)






先是执行dbcc checktable等,没有解决

DBCC CHECKTABLE ('dbo.sysjobhistory') WITH PHYSICAL_ONLY;
GO

DBCC CHECKTABLE ('dbo.sysjobhistory',1);


DBCC CHECKTABLE ('dbo.sysjobhistory',2);


DBCC CHECKTABLE ('dbo.sysjobhistory');

有报错信息,报错信息大概100多条:
数据行(1:6197:21)由(instance_id = 210664112)标识,索引值为“job_id = '23DCC31A-1C40-4E2B-AE58-8ED4428CB2EA' and instance_id = 210664112”。
从表里查询这个条件,也能查出来数据,后来想到可能是索引的问题。
把索引删除重建,问题解决。

后来又想到,其实索引重建可能也可以解决。

-- 重建索引
ALTER INDEX IX_indexname ON tablename REBUILD WITH (ONLINE = ON)
-- 更新统计信息
UPDATE STATISTICS tablename [IX_indexname]

 


附查询索引相关信息代码:

--生成表索引的创建删除语句

;
WITH    TB
          AS ( SELECT   TB.object_id ,
                        Schema_name = Sch.name ,
                        table_name = TB.name
               FROM     sys.tables TB
                        INNER JOIN sys.schemas Sch ON TB.schema_id = Sch.schema_id
               --WHERE    TB.is_ms_shipped = 0  --系统对象
             ),
        IXC
          AS ( SELECT   IXC.object_id ,
                        IXC.index_id ,
                        IXC.index_column_id ,
                        IXC.is_descending_key ,
                        IXC.is_included_column ,
                        column_name = C.name
               FROM     SYS.index_columns IXC
                        INNER JOIN SYS.columns C ON IXC.object_id = C.object_id
                                                    AND IXC.column_id = C.column_id
             ),
        IX
          AS ( SELECT   IX.object_id ,
                        index_name = IX.name ,
                        index_type_desc = IX.type_desc ,
                        IX.is_unique ,
                        IX.is_primary_key ,
                        IX.is_unique_constraint ,
                        IX.is_disabled ,
                        index_columns_TEMP = STUFF(IXC_COL.index_columns, 1, 1,
                                                   N'') ,
                        index_columns = CASE WHEN IXC_COL_INCLUDE.index_columns_includes IS NOT NULL
                                             THEN STUFF(LEFT(IXC_COL.index_columns,
                                                             DATALENGTH(IXC_COL.index_columns)
                                                             - DATALENGTH(IXC_COL_INCLUDE.index_columns_includes)),
                                                        1, 1, N'')
                                             ELSE STUFF(IXC_COL.index_columns,
                                                        1, 1, N'')
                                        END ,
                        index_columns_includes = STUFF(IXC_COL_INCLUDE.index_columns_includes,
                                                       1, 1, N'')
               FROM     sys.indexes IX
                        CROSS APPLY ( SELECT    index_columns = ( SELECT
                                                              N','
                                                              + QUOTENAME(column_name)
                                                              FROM
                                                              IXC
                                                              WHERE
                                                              object_id = IX.object_id
                                                              AND index_id = IX.index_id
                                                              ORDER BY index_column_id
                                      FOR       XML PATH('') ,
                                                    ROOT('r') ,
                                                    TYPE      
   ).value('/r[1]', 'nvarchar(max)')
                                    ) IXC_COL
                        OUTER APPLY ( SELECT    index_columns_includes = ( SELECT
                                                              N','
                                                              + QUOTENAME(column_name)
                                                              FROM
                                                              IXC
                                                              WHERE
                                                              object_id = IX.object_id
                                                              AND index_id = IX.index_id
                                                              AND is_included_column = 1
                                                              ORDER BY index_column_id
                                      FOR       XML PATH('') ,
                                                    ROOT('r') ,
                                                    TYPE      
   ).value('/r[1]', 'nvarchar(max)')
                                    ) IXC_COL_INCLUDE
               WHERE    index_id > 0
             )
    SELECT  DB_NAME() AS N'数据库名' ,
            TB.Schema_name AS N'架构' ,
            TB.table_name AS N'表名' ,
            IX.index_name AS N'索引名' ,
            IX.index_type_desc AS N'索引类型' ,
            IX.is_unique AS N'是否唯一索引' ,
            IX.is_primary_key AS N'是否主键' ,
            IX.is_unique_constraint AS N'是否唯一约束' ,
            IX.is_disabled AS N'是否禁用索引' ,
            IX.index_columns AS N'索引列' ,
            IX.index_columns_includes AS N'索引包含列' ,
            N'CREATE INDEX ' + N'[' + IX.index_name + N']' + N' ON ' + N''
            + QUOTENAME(DB_NAME()) + N'.' + QUOTENAME(TB.SCHEMA_NAME) + N'.'
            + QUOTENAME(TB.table_name) + N'(' + IX.index_columns + N')'
            + CASE WHEN IX.index_columns_includes IS NOT NULL
                   THEN CHAR(13) + N'INCLUDE (' + IX.index_columns_includes
                        + N')'
                   ELSE N''
              END AS N'创建索引' ,
            N'DROP INDEX ' + QUOTENAME(IX.index_name) + N' ON  '
            + QUOTENAME(DB_NAME()) + N'.' + QUOTENAME(TB.SCHEMA_NAME) + N'.'
            + QUOTENAME(TB.table_name) AS N'删除索引'
    FROM    TB
            INNER JOIN IX ON TB.object_id = IX.object_id
    ORDER BY Schema_name ,
             table_name ,
             IX.index_name

 

收尾工作:
1.清除错误日志
    

exec sp_cycle_agent_errorlog

exec sp_cycle_errorlog

 


2.删除错误   D:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log     目录下错误日志文件。











 

标签:IX,name,index,IXC,SQLServer,msdb,索引,id,columns
From: https://www.cnblogs.com/davidhou/p/18359218

相关文章

  • MySQL- 覆盖索引
    覆盖索引(CoveringIndex)是MySQL中的一种优化技术,它能够显著提高查询性能。在使用覆盖索引的情况下,查询操作只需要访问索引即可获取所需的数据,而不必再访问表的实际数据行(即不需要回表)。这种优化可以减少I/O操作,提升查询效率。1.什么是覆盖索引?覆盖索引是指一个索引包......
  • MySQL- 索引下推
    索引下推(IndexConditionPushdown,简称ICP)是MySQL5.6引入的一项优化技术,它通过将部分查询条件“下推”到索引扫描阶段,从而减少不必要的行访问和回表操作,提高查询性能。1.索引下推的概念在传统的索引扫描过程中,MySQL会首先通过索引找到符合索引条件的记录,然后回表(即......
  • 数据库系统 第13节 索引
    索引(Indexing)是一种数据结构技术,广泛应用于数据库和文件系统中,用于提高数据检索的速度。在没有索引的情况下,数据库必须从头到尾扫描整个表来找到所需的数据行,这被称为全表扫描(FullTableScan),对于大型数据库来说效率极低。索引的基本原理索引类似于书籍的目录。当你需要查......
  • 《优化 SQL 索引策略:提升大规模数据检索效率的关键》
    在当今数字化时代,数据量呈爆炸式增长,企业和组织面临着处理大规模数据的巨大挑战。对于数据库管理员和开发者来说,如何在大规模数据环境中优化SQL中的索引策略,以减少数据检索时间,成为了至关重要的任务。索引是数据库中用于加速数据检索的重要结构。然而,在大规模数据场景下,......
  • ES 创建索引,重建索引
    创建索引:put:http://Ip:9201/product_v1{"aliases":{},"mappings":{"properties":{"id":{"type":"long"},"mId":{"type":"long"},"productName":{&q......
  • MySQL数据分析进阶(十三)高效的索引
    ※食用指南:文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!)【中字】SQL进阶教程|史上最易懂SQL教程!10小时零基础成长SQL大师!!https://www.bilibili.com/video/BV1UE41147KC/?spm_id_from=333.1007.0.......
  • EF Core 索引器属性(Indexer property)场景及应用
    EFCore索引器属性(Indexerproperty)场景及应用简介EFCore中的索引器属性(IndexerProperty)是指通过一个特殊的属性来访问实体类中的数据,而不必明确声明实体属性。这种属性在一些动态或未预定义的场景中非常有用,比如当实体的属性名在编译时并不确定,或者属性名集合较大时。场景......
  • SQL-----索引设计原则
    索引设计原则1、针对于数据量较大,于且查询比较频繁的表建立索引2、针对常作为查询条件(where)、排序(orderby)、分组(groupby)操作的字段建立索引3、尽量选择区分度高的列作为索引,尽量建立唯一索引,区分度越高,使用索引的效率越高4、如果是字符串类型的字段,字符的长度......
  • mysql优化-索引失效场景
    1.索引字段不独立索引字段进行了表达式计算事先计算好表达式的值,再传过来,避免在SQLwhere条件=的左侧做计算select*fromemployeeswhereemp_no+1=10003;select*fromemployeeswhereemp_no=10002;索引字段是函数的参数预先计算好结果,再传过来,在where条件的......
  • CUDA--内存访问越界或无效的索引操作解决办法
    报错信息File"D:\anaconda3\envs\HCAVE2\lib\site-packages\torch\nn\utils\rnn.py",line258,inpack_padded_sequencesorted_indices=sorted_indices.to(input.device)RuntimeError:CUDAerror:device-sideasserttriggeredCUDAkernelerrorsm......