您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_dbcc_faultreport

语法


sp_dbcc_faultreport [<report_type> [, <dbname> [, <objectname>
	[, <date> [, <hard_only> [, <exclusion_mode>[, <exclusion_faults>
	[, <exclusion_tables> [, <exclusion_combo> 
	[, <display_recommendations> [, <opid> [,<fault_type_in>]]]]]]]]]]]]

参数

<report_type>

指定故障报告的类型。有效值为 short 和 long。缺省值为 short。

<dbname>

指定目标数据库的名称;例如 master..sysdatabases。如果未指定 <dbname>,报告将包含 dbccdb..dbcc_operation_log 中所有数据库的相关信息。

<object_name>

指定要为其生成报告的表或索引的名称。如果未指定 <object_name>,则报告有关目标数据库中的所有对象的统计信息。

<date>

指定完成 dbcc checkstorage 操作的确切日期和时间。可以在 dbcc_operation_log.finish 中找到这个值。也可以创建该值,方法是在 sp_dbcc_summaryreport 输出中将 start time 的日期与 end time 的小时数和分钟数进行组合。如果没有指定 <date>,则 SAP ASE 服务器使用最近操作的日期。

指定 <date> 参数时,务必要让输入的时间晚于操作完成的日期。sp_dbcc_faultreport 不能报告在此参数中输入的时间之后发生的故障。

> 注意

若只想指定 <date> 参数,请对其它所有参数使用“null”。如果完全省略某个参数,sp_dbc_faultreport 将无法生成正确的报告。

<hard_only>

指定 1 时启用硬故障的报告。有效值为 0 或 1,缺省值为 0。

<display_recommendations>

启用报告 sp_dbcc_recommendations 生成的建议,参数 <exclusion_mode>、<exclusion_faults>、<exclusion_tables>、<display_recommendations> 和 <exclusion_combo> 引用排除支持,并且是可选的。

<exclusion_mode>

为 varchar 类型,缺省情况下启用。要禁用此参数,在每次运行 sp_dbcc_faultreport 时都必须提供“ignore”。使用下列命令之一:

  • ignore – 忽略永久排除项列表,如果提供了临时排除项列表,则使用临时排除项列表(varchar 类型)。

  • extend – 应用临时排除项列表和永久排除项列表(varchar 类型)。

    <exclusion_faults>

    是要从报告中排除的故障类型的列表,用逗号分隔(varchar 类型)。

    <exclusion_tables>

    是要从报告范围中排除的表的列表,用逗号分隔(varchar 类型)。

    <exclusion_combo>

    是要从报告范围中排除的故障/表组合的列表,用逗号分隔(varchar 类型)。

    <opid>

    为特定日期的特定(而非最新)操作 ID 启用故障报告。缺省情况下未指定任何操作 ID。

    <fault_type_in>

    为特定故障类型启用故障报告。缺省值为 NULL。

    示例

    示例 1

    生成一个短报告,用以报告关于在 sybsystemprocs 数据库的表中发现的故障。该报告包含表名、出现故障的索引号、故障的类型代码、故障的简短说明,以及出现故障的页号:

    
    sp_dbcc_faultreport "short"
    
    
    Database Name : sybsystemprocs
     
     Table Name     Index  Type Code Description         Page Number
     -------------- ------ --------- ------------------- -----------
     sysprocedures        0    100031 page not allocated        5702
     sysprocedures        1    100031 page not allocated       14151
     syslogs              0    100022 chain start error        24315
     syslogs              0    100031 page not allocated       24315
    

    示例 2

    生成一个长报告,用以报告关于在 sybsystemprocs 数据库的表中发现的故障。下例显示了长报告输出的第一部分。完整报告将为 dbcc checkstorage 在其中发现故障的目标数据库中的每个对象都重复这些信息。在“page header”字段下显示的较长数字字符串之后的数据(“Header for 14151, next 14216, previous 14150 ...”)说明“page header”字符串的组成部分:

    
    sp_dbcc_faultreport "long"
    
    
    Generating 'Fault Report' for object sysprocedures in database sybsystemprocs.
    
    Type Code: 100031; Soft fault, possibly spurious
    Page reached by the chain is not allocated.
    page id: 14151
    page header: 0x00003747000037880000374600000005000648B803EF0001000103FE0080000F
    Header for 14151, next 14216, previous 14150, id = 5:1
     time stamp = 0x0001000648B8, next row = 1007, level = 0
     free offset = 1022, minlen = 15, status = 128(0x0080)
    .
    .
    .
    

    示例 3

    从 sp_dbcc_summaryreport 的输出中,为在 End Time 指定的日期和时间完成的操作生成所有数据库中所有表发生的故障的短报告。在 参数中应使用准确的结束时间,这一点很重要。例如,如果输入:

    
    7/25/2000 9:58 
    

    而不是

    
    7/25/2000 9:58:0:190
    

    报告会包含截至 9:58 而不是此后发生的故障。如果不想输入操作结束的确切时间,则可以使用 9:59:

    
    sp_dbcc_faultreport "short", NULL, NULL, 
        "07/25/00 9:59"
    

    在这种情况下,报告会包含截至 9:59 发生的故障。

    示例 4

    生成一个简短形式的报告,仅报告最近一次对名为 mydb 的数据库运行 checkstorage 时报告的硬故障:

    
    sp_dbcc_faultreport short, mydb, @hard_only = 1
    

    示例 5

    向数据库 my_db 的故障报告添加建议的修复:

    
    sp_dbcc_faultreport @dbname = my_db, 
        @display_recommendations = 1
    

    示例 6

    生成的故障报告不包含修复建议:

    
    sp_dbcc_faultreport @dbname = my_db
    

    示例 7

    对数据库 my_db 运行禁用了持久排除列表的 sp_dbcc_faultreport:

    
    sp_dbcc_faultreport @dbname = 'my_db', @exclusion_mode = 'ignore'
    

    示例 8

    对数据库 my_db 运行启用了持久排除列表的 sp_dbcc_faultreport,且对其进行了扩展,使其不处理故障类型 100036:

    
    sp_dbcc_faultreport @dbname = 'my_db', @exclusion_mode = 'extend', 
        @exclusion_faults = '100036'
    

    示例 9

    对数据库 my_db 运行启用了持久排除列表的 sp_dbcc_faultreport,且对其进行了扩展,使其不处理故障类型 100036 和表 tab:

    
    sp_dbcc_faultreport @dbname = 'my_db', @exclusion_mode = 'extend',
        @exclusion_tables = 'tab'
    

    示例 10

    对数据库 my_db 运行禁用了持久排除列表的 sp_dbcc_faultreport,并启用了临时排除列表,以便不处理表 tab 和故障类型 100036:

    
    sp_dbcc_faultreport @dbname = 'my_db', @exclusion_mode = 'ignore', 
        @exclusion_faults = '100036', @exclusion_tables = 'tab'
    

    示例 11

    对数据库 my_db 运行 sp_dbcc_faultreport,同时禁用永久排除项列表并启用一个临时排除项列表,以使与表 mytable 有关的故障类型“100002”和与表 tab 有关的故障类型 100035 排除在处理范围之外:

    
    sp_dbcc_faultreport @dbname = 'my_db', @exclusion_mode = 'ignore', 
        @exclusion_combo ='mytable:100002, tab:100035'
    

    示例 12

    生成一个长形式报告,用以报告最近一次对 mydb 数据库运行 checkstorage 时所报告的 100029 故障(100029 是页头错误的故障类型):

    
    sp_dbcc_faultreport long, mydb, @fault_type_in = 100029
    

    示例 13

    生成一个简短形式的报告,用以报告对 mydb 数据库运行操作 ID 为 5 的 checkstorage 时所报告的故障:

    
    sp_dbcc_faultreport short, mydb, @opid = 5
    

    用法

    使用 sp_dbcc_faultreport 时,还存在一些其它注意事项:

  • sp_dbcc_faultreport 可以生成显示目标数据库的指定对象所发生的所有故障的报告。

  • sp_dbcc_faultreport 在以下情况下将发出大量错误消息号 10028:

    - 使用 sp_placeobject 令具有现有分配单元的对象将新分配单元放置在新段上。

    - 使用 sp_dropsegment 从片段中删除某个段,而该片段包含指派给该段的某个对象的分配单元。

    错误消息号 100028 只是信息性消息,并不表示严重错误。如果不希望接收这类消息,可以自行创建报告过程,不报告此类(或其它)错误。一种方法就是将以下命令添加到 installdbccdb 脚本的标准 sp_dbcc_faultreport 存储过程的最前面:

    
    print "removing 100028 errors from dbcc_faults table"
    delete dbcc_faults where type_code = 100028
    

  • 如果 sp_dbcc_faultreport 返回的 为数值,则表示完成 dbcc checkstorage 操作后删除了该对象。