SQL数据库管理—DBCC数据库修复

SQL数据库管理—DBCC数据库修复

 

概述

Transact-SQL 编程语言提供 DBCC语句作为 Microsoft SQL Server的数据库控制台命令。这些语句对数据库的物理和逻辑一致性进行检查。许多 DBCC 语句能够对检测到的问题进行修复。

一 基本步骤

1.1数据库简单检测

检测出问题点,在具体修复

 dbcc checkdb (RMS_APP_NLH)

WITH ROLLBACK IMMEDIATE 是做设置单用户总是不成功的时候,加入WITH ROLLBACK IMMEDIATE 选项可以快速回滚事务,变成单用户模式。

 

 

use RMS_APP_NLH

go

alter database RMS_APP_NLHset single_user  WITH ROLLBACK IMMEDIATE;

go

dbcc checktable('R_Traffic_Record',REPAIR_ALLOW_DATA_LOSS)

go

dbcc checktable('R_Traffic_Record',REPAIR_REBUILD)

go

dbcc checktable('S_103_Quarter',REPAIR_ALLOW_DATA_LOSS)

go

dbcc checktable('S_103_Quarter',REPAIR_REBUILD)

alter database RMS_APP_NLHset multi_user

go

 

 

二 出现复杂情况

2.1 DBCC 检测的时候出现

DBCC检测的时候不能定位表或者对象。

2.2 使用语句定位表

-----------------------游标循环 check table------------------

 

DECLARE NYCURSOR CURSOR

 

--声明游标

FOR

    SELECT  name

    FROM    sys.tables

    WHERE   is_ms_shipped = 0; 

 

 

OPEN NYCURSOR;

 

DECLARE @TAB_NAME VARCHAR(1000);

 

FETCH NEXT FROM NYCURSOR INTO @TAB_NAME;

 

WHILE @@FETCH_STATUS = 0

    BEGIN 

 

        SELECT  @TAB_NAME = 'THIS4.dbo.' + @TAB_NAME;

 

        DBCC CHECKTABLE (@TAB_NAME);

 

--DBCC CHECKTABLE运行

 

        FETCH NEXT FROM NYCURSOR INTO @TAB_NAME;

 

    END;

 

CLOSE NYCURSOR;

 

DEALLOCATE NYCURSOR;

 

2.3 修复表

 

use RMS_APP_NLH

go

alter database RMS_APP_NLHset single_user

go

dbcc checktable('R_Traffic_Record',REPAIR_ALLOW_DATA_LOSS)

go

dbcc checktable('R_Traffic_Record',REPAIR_REBUILD)

go

dbcc checktable('S_103_Quarter',REPAIR_ALLOW_DATA_LOSS)

go

dbcc checktable('S_103_Quarter',REPAIR_REBUILD)

alter database RMS_APP_NLHset multi_user

go

 

 

三 无日志还原数据库

alter database t_branch set emergency

alter database t_branch set single_user

 

dbcc checkdb ('t_branch',repair_allow_data_loss)

dbcc checkdb ('t_branch',repair_rebuild)

 

alter database t_branch set multi_user

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值