1. DBCC CHECKDB 
  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。 
use master 
declare @databasename varchar(255) 
set @databasename='需要修复的数据库实体的名称' 
exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态 
然后执行 DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。注意:修复后可能会造成部分数据的丢失。 
2. DBCC CHECKTABLE 
如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。 
use 需要修复的数据库实体的名称 
declare @dbname varchar(255) 
set @dbname='需要修复的数据库实体的名称' 
exec sp_dboption @dbname,'single user','true' 
dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS) 
dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD) 
------把' 需要修复的数据表的名称'更改为执行DBCC CHECKDB时报错的数据表的名称 
exec sp_dboption @dbname,'single user','false' 
3. 其他的一些常用的修复命令 
DBCC DBREINDEX 重建指定数据库中表的一个或多个索引 
用法:DBCC DBREINDEX (表名,'') 修复此表所有的索引。 
=================================== 
SQL SERVER数据库的检测及修复方法 
随着K/3产品的推广,要求客户服务人员对SQL SERVER数据库的了解也进一步提高。在K/3的使用过程中,数据库文件被频繁地使用,由于某些原因,数据库有可能被损坏,本文将针对这种情况的数据库检测及修复方法做一简单讲解。希望各位在实际工作过程中有新的发现时,及时给我们提供信息,以便做进一步的更新。 
1.1 SQL SERVER数据库的检测 
SQL SERVER提供了数据库检测的命令,可用DBCC CHECKDB对数据库中各个对象的分配及结构的正确性进行检测,并可通过一参数控制,将所有的错误信息显示出来。其语法如下: 
DBCC CHECKDB 
('database_name' [,NOINDEX | { REPAIR_ALLOW_DATA_LOSS 
| REPAIR_FAST 
| REPAIR_REBUILD 
}] 
) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}] 
参数说明: 
'database_name'代表被检测的数据库实体名; 
NOINDEX指非系统表的非聚族索引不检测; 
REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST| REPAIR_REBUILD 指直接修复发现的错误,其中REPAIR_ALLOW_DATA_LOSS代表,若此错误不能修复时,系统将直接删除相关数据。带此三个参数的任一个时,数据库必须处于单用户模式,可在Enterprise Manager中的数据库属性中设置; 
ALL_ERRORMSGS代表将检测到的错误信息全部显示出来,否则,对于每张表最多只显示200条错误信息; 
NO_INFOMSGS代表隐藏所有的信息及占用空间的报告。 
经过检测,对于错误的对象,将以OBJECT ID的形式报告具体出错的信息,可根据OBJECT ID到系统表sysobjects中查找到相关的表,即NAME。 
1.2 SQL SERVER问题数据库的修复 
经过数据库检测后,可针对出现的问题采取相应的措施进行处理。如通过检测后,发现对象的物理存放存在问题,可用DBCC CHECKALLOC来进行修复: 
DBCC CHECKALLOC ('database_name' | REPAIR_REBUILD }] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}] 
若是非系统对象的索引出错,则可用DBCC DBREINDEX进行修复: 
DBCC DBREINDEX ( [ 'database.owner.table_name' [, index_name [, fillfactor ] ] ] ) [WITH NO_INFOMSGS] 
以上两种情况,也可直接使用DBCC CHECKDB(‘db_name',repair_rebuild)来修复。 
另外一种情况是在进行检测时,提示无法建立数据连接,此时表明,数据库已损坏。对于这种情况,我们可采取如下措施来尝试修复。 
首先,在SQL Enterprise中新建一数据库(如数据库名为test),建好数据库后,停止SQL Server Service Manager,并将客户数据库的MDF文件更名为test _data.mdf(即新建数据库的主文件名),然后用更名后的文件覆盖新建数据库同名文件,接着,启动SQL Server Service Manager。对Master数据库将系统表设置为可更改状态 
Use Master 
Go 
sp_configure 'allow updates', 1 
reconfigure with override 
Go 
将数据库设为紧急状态: 
update sysdatabases set status = 32768 where database ' 
停止并重新启动SQL Server Service Manager,并重建Log文件: 
DBCC TRACEON (3604) 
DBCC REBUILD_LOG(' test ','test _log_ldf') 
将数据库设置为单用户模式,然后进行检测: 
sp_dboption ' test ', 'single user', 'true' 
DBCC CHECKDB(' test ') 
Go 
此数据库执行CHECKDB的过程中发现一些表的索引被破坏,于是针对具体的表进行重建索引的操作: 
DBCC DBREINDEX(表名) 
如执行以上操作仍然不能解决,若索引破坏的表是临时表或不是关键表,则可从新建账套中引入,若是主表,则可能通过近期的备份来(部份)恢复。若没有一个备份,则无法修复。 
1.3 SQL Server数据库为什么易损坏呢? 
以下是微软提供的一些可能引起数据库损坏的原因及一些预防措施: 
操作问题,包括冷起动机器、热拔硬盘、删除一些数据库文件; 
硬件问题,包括磁盘控制器的问题; 
操作系统问题,包括与系统相关的一些致命错误。 
1.4 预防措施: 
1、定期/不定期执行CHKDSK(不带参数),以检测硬盘物理结构并修复一些CHKDSK报告的问题; 
2、常备份数据。 
1.5 应用数据库修复举例 
declare @databasename varchar(255) 
set @databasename='AIS20021224170730'------一定要手工输入 
---------执行一般性修复还存在问题时,进行允许数据丢失的修复 
---------许数据丢失的修复要求在单用户下进行,此时请退出中间层,客户端,sql的其他模块 
---所有功能退出,在查询分析器master里设置数据库为单用户 
exec sp_dboption @databasename, N'single', N'true' 
-----在查询分析器master里,进行修复数据库 
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) 
dbcc checkdb(@databasename,REPAIR_REBUILD) 
------还原数据库状态 
exec sp_dboption @databasename, N'single', N'false' 
第2章数据库日志损坏的修复 
请遵照如下步骤来试图重建数据库事务日志. 
注意: 由于事务日志丢失, 数据库可能有没有提交的数据. 
注:都要替换成真实的数据库名字 
2.1 步骤1: 
创建一个新的数据库,命名为原来数据库的名字. 
2.2步骤2: 
停止SQL Server 
2.3步骤3: 
把老数据库的MDF文件替换新数据库的相应的MDF文件, 并把LDF文件删除 
2.4步骤4: 
重新启动SQL Server 服务,然后运行如下命令:

复制代码代码如下:
Use Master 
Go 
sp_configure 'allow updates', 1 
reconfigure with override 
Go 
begin tran 
update sysdatabases set status = 32768 where db_name' 
-- Verify one row is updated before committing 
commit tran 

2.5步骤5: 
停止SQL然后重新启动SQL Server 服务,然后运行如下命令: 
DBCC TRACEON (3604) 
DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF') 
Go 
2.6步骤6: 
停止SQL然后重新启动SQL Server 服务,然后运行:

复制代码代码如下:
use master 
update sysdatabases set status = 8 where 
Go 
sp_configure 'allow updates', 0 
reconfigure with override 
Go 

2.7步骤7: 
运行dbcc checkdb(db_name)检查数据库的完整性. 
第3章 数据库质疑的一般处理 
1、执行如下SQL(打开修改系统表的开关): 
EXEC sp_configure 'allow updates', 1 
RECONFIGURE WITH OVERRIDE 
2、修改数据库Master中的表:sysdatabases 
将 status字段数值更改为4 
3、再执行如下SQL: 
EXEC sp_configure 'allow updates', 0 
RECONFIGURE WITH OVERRIDE。

SQLServer 数据修复命令DBCC一览的更多相关文章

  1. 详解SQL Server数据修复命令DBCC的使用

    严重级别为 21 表示可能存在数据损坏. 可能的原因包括损坏的页链.损坏的 IAM 或该对象的 sys.objects目录视图中存在无效条目. 这些错误通常由硬件或磁盘设备驱动程序故障而引起. MS ...

  2. 调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令

    调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (二)使用Windbg调试SQLSERVER ...

  3. linux fack 文件系统修复命令

    [简介] fsck命令被用于检查并且试图修复文件系统中的错误.当文件系统发生错误四化,可用fsck指令尝试加以修复. [选项]必要参数 -a 非互交模式,自动修复 -c 检查是否存在有损坏的区块. - ...

  4. 使用mongify将sqlserver数据导入到mongodb

    最近需要将sqlserver数据导入到mongodb中,在github上搜了一圈,发现两个项目有点适合 mongify sql2mongodb 先试了下sql2mongodb(有个好名字果然有好处啊) ...

  5. 通用高效的数据修复方法:Row level repair

    导读:随着大数据的进一步发展,NoSQL 数据库系统迅速发展并得到了广泛的应用.其中,Apache Cassandra 是最广泛使用的数据库之一.对于 Cassandra 的优化是大家研究的热点,而 ...

  6. Python 爬取 热词并进行分类数据分析-[数据修复]

    日期:2020.02.01 博客期:140 星期六 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  7. Entity Framework Core中的数据迁移命令

    使用程序包管理控制台输入命令. 数据迁移命令: Add-Migration  对比当前数据库和模型的差异,生成相应的代码,使数据库和模型匹配的. Remove-Migration 删除上次的迁移 Sc ...

  8. SQLServer数据实时同步PostgreSQL

    SQLServer数据实时同步至PostgreSQL 前言: 为迎合工作需求有时候传送的数据保存在SQLServer中但由于工作需要需要保存到PostgreSQL中进行处理,本文主要通过在SQLSer ...

  9. Oracle、MySql、SQLServer数据分页查询

    看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...

随机推荐

  1. uums

    http://blog.csdn.net/hudon/article/details/1506042 http://www.cnblogs.com/biakia/p/4779655.html http ...

  2. spring mvc WebArgumentResolver不生效

    WebArgumentResolver: SPI for resolving custom arguments for a specific handler method parameter. Typ ...

  3. java RSA加解密以及用途

    在公司当前版本的中间件通信框架中,为了防止非授权第三方和到期客户端的连接,我们通过AES和RSA两种方式的加解密策略进行认证.对于非对称RSA加解密,因为其性能耗费较大,一般仅用于认证连接,不会用于每 ...

  4. 改写百度云推送SDK,PHP PEAR 包:Services_Baidu_Push

    iPhone使用apple push很方便,而Android很多厂商删除了google push,而且google在大陆连不上,所以要用别的办法. Android常见的推送服务商有:极光推送(http ...

  5. jQuery Filterizr 筛选过滤

    Filterizr 是一款功能强大的筛选过滤插件,它提供了多重筛选过滤方式,配合了css3的动画效果. 在线实例 默认 回调函数 使用方法 <div class="sucaihuo&q ...

  6. Adaptive Backgrounds – jQuery 自适应背景插件

    Adaptive Backgrounds 是一款很特别的 jQuery 插件,可以从图像中提取主导颜色并将它应用到它的父元素.这个插件利用 Canvas 元素和 ImageData 对象.需要注意的是 ...

  7. MySQL之浅谈MySQL的存储引擎

    什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合.     我们通常说的MySql数据库,sql server数据库等 ...

  8. sublime text 之添加插件 并使用

    通过package  controll  install  安装各种插件: 1:AdvancedNewFile,安装完毕后 快捷键:ctr+alt+n:输入框中输入你要创建的文件夹和文件,就创建好了. ...

  9. VS2012 asp.net mvc 4 运行项目提示:"错误消息 401.2。: 未经授权: 服务器配置导致登录失败"

    创建mvc4 应用程序发布,运行出错.出现未经授权: 服务器配置导致登录失败.请验证您是否有权基于您提供的凭,后来找得解决方法: 打开点站的web.confg文件,将: <authorizati ...

  10. JavaScript基础20——element对象

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...