检测修复数据库(分配错误)
- 格式:doc
- 大小:159.00 KB
- 文档页数:4
DBCC CHECKDB 数据库或表修复MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。
1. DBCC CHECKDB重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。
use masterdeclare @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 (表名,’’) 修复此表所有的索引。
数据库的数据修复与一致性检查方法随着信息技术的发展,数据库正成为各个行业中重要的数据存储和管理工具。
有效地管理和维护数据库中的数据是确保其正常运行和可靠性的关键。
在数据库运行过程中,由于各种原因,比如硬件故障、人为错误或应用程序逻辑错误,数据库中的数据可能会受到损坏或变得不一致。
为了确保数据的完整性和一致性,数据库管理员需要运用一些数据修复与一致性检查方法。
数据修复是指识别并修复数据库中存在的错误或不一致的数据。
数据错误可以分为硬件造成的错误和逻辑错误两种情况。
硬件错误包括磁盘故障、内存错误等。
逻辑错误则是由于应用程序的设计或编码错误引起的。
无论是哪种类型的错误,都需要数据库管理员根据库的特定情况采取相应的修复策略。
首先,对于硬件故障引起的数据库损坏,常用的方法是采用备份与恢复策略。
数据库管理员应定期备份数据库中的数据,并将备份数据存储在不同位置的磁盘或存储设备上。
当数据库发生错误或故障时,可以从备份文件中恢复数据,以确保数据的完整性。
其次,对于逻辑错误引起的数据库不一致,可以使用一致性检查的方法来识别和修复错误。
一致性检查是通过检测数据库中数据之间的依赖关系和规则来判断数据的一致性。
为了实现一致性检查,数据库管理员可以采用以下方法之一。
首先,使用完整性约束条件。
完整性约束条件是数据库提供的一种机制,用来限制数据的取值范围。
通过定义数据的逻辑关系和规则,数据库可以自动地检查数据的合法性和一致性。
数据库管理员可以使用主键约束、外键约束、唯一性约束等完整性约束来预防和修复数据不一致的情况。
其次,使用数据库管理系统提供的数据修复工具。
现代数据库管理系统通常提供了一些用于修复数据库错误的工具。
这些工具可以自动检测和修复数据的一致性问题,比如重建索引、重新生成统计信息、修复或重建损坏的数据表等。
数据库管理员可以运行这些工具,以便快速地修复数据库的数据问题。
此外,对于大型数据库和复杂的业务逻辑,数据库管理员还可以考虑使用数据验证和一致性检查工具。
金蝶K3数据库常见问题及数据库修复恢复方法(二)12、打开帐套出现一个升级的界面错误描述:打开帐套后,软件出现一个存在升级的界面,并在它后有一个看不见具体内容的错误的界面。
问题原因:在Glpref 表的Lastappwriterid 值有错。
处理方法:对比Sample.Ais 或标准的空账账套的对应字段的内容修改即可。
13、工资报表显示出现错误错误描述:2000 标准版7.0,结帐到12 月中发现工资报表中的职员姓名全不显示,固定项显示为空白,年结后到2004 年1 月中也不显示,但新增加的职员可以正常显示。
问题原因:在工资数据表Padata 中有太多的无用记录,造成数据混乱处理方法:将Padata 表中所有为0 值的记录删除14、固定资产计提减值准备时报错错误描述:计提减值准备时报错:运行时错误13,类型不匹配。
问题原因:固定资产卡片上缺少减值的科目信息。
处理方法:计提减值准备是现在的软件升级后增加的功能,所以在升级后需要对所有卡片做其他变动,增加减值准备对方科目和减值科目,之后才能计提减值准备。
15、固定资产计提折旧无法生成凭证错误描述:固定资产系统进行计提累计折旧在进度完成时,系统提示:计提折旧出错,无法生成凭证”。
问题原因:Glvchmaxnum(凭证最大号)表中的当月的凭证记录丢失。
处理方法:参照Glvch 表中记录的当月最大号和本表中的格式,将记录补上再计提折旧。
16、固定资产计提折旧时提示错误错误描述:在固定资产计提折旧时进行到25%左右出现错误!问题原因:固定资产卡片中记录的科目信息不正确。
处理方法:1)检查Fabalexpense 中折旧费用科目与它的核算项目类别,是否和科目表中的设置不一致,如不一致,则应修改为一致。
2)检查在Facard 中,Fassetid(卡片代码)为012 的Fassetacid(固定资产科目代码)的值是否是明细的固定资产代码,检查折旧科目代码是否正确。
问题描述:1、数据库的C盘路径下的数据库LOG文件夹里不断自动产生错误的日志文件(errorlog),在十分钟时间内就可以把C盘20G刷满,导致C盘空间不足,数据库服务无法正常访问;处理办法:1、在数据库中用dbcc checkdb命令检查数据库可以发现数据库有xxx个表报一致性错误,如图:截取部分输出如下:mamdb34的DBCC 结果。
Service Broker 消息9675,状态1: 已分析的消息类型: 14。
Service Broker 消息9676,状态1: 已分析的服务约定: 6。
Service Broker 消息9667,状态1: 已分析的服务: 3。
Service Broker 消息9668,状态1: 已分析的服务队列: 3。
Service Broker 消息9669,状态1: 已分析的会话端点: 0。
Service Broker 消息9674,状态1: 已分析的会话组: 0。
Service Broker 消息9670,状态1: 已分析的远程服务绑定: 0。
sys.sysobjvalues的DBCC 结果。
消息8929,级别16,状态1,第1 行对象ID 60,索引ID 1,分区ID 281474980642816,分配单元ID 281474980642816 (类型为In-row data): 在ID 为1786249216 的行外数据中发现错误,该数据由RID = (1:2754:0) 标识的data 记录所有消息8961,级别16,状态2,第1 行表错误: 对象ID 60,索引ID 1,分区ID 281474980642816,分配单元ID 71776119065149440 (类型为LOB data)。
位于页(1:47613),槽0,文本ID 1786249216 的行外数据节点与它在页(1:2754),槽0 的引用不匹配。
消息8965,级别16,状态1,第1 行表错误: 对象ID 60,索引ID 1,分区ID 281474980642816,分配单元ID 71776119065149440 (类型为LOB data)。
修复系统表(表错误- 对象id 2。
text、ntext 或image 节点(位于页(1-875),槽0,文本id 177078272)与该节点位于页(1-500),槽14 处的引用不匹配)修复数据库,应该是一个再熟悉不过的“陌生”东东了。
以往修复就使用一般的修复语句即可,今天遇到一个顽固不化的错误,nnd,报错信息如下:服务器: 消息8929,级别16,状态1,行 1对象id 2: 在文本id 177078272 中发现错误,该文本的所有者是由rid = (1:627:1) id = 1899153811 and indid = 10 标识的数据记录。
服务器: 消息8961,级别16,状态1,行 1表错误: 对象id 2。
text、ntext 或image 节点(位于页(1:875),槽0,文本id 177078272)与该节点位于页(1:500),槽14 处的引用不匹配。
'yinyi' 的dbcc 结果。
'sysobjects' 的dbcc 结果。
对象'sysobjects' 有419 行,这些行位于7 页中。
'sysindexes' 的dbcc 结果。
对象'sysindexes' 有451 行,这些行位于22 页中。
checkdb 发现了0 个分配错误和 2 个一致性错误(在表'sysindexes' 中,该表的对象id 为2)。
'syscolumns' 的dbcc 结果。
checkdb 发现了0 个分配错误和2 个一致性错误(在数据库'yinyi' 中)。
dbcc 执行完毕。
如果dbcc 输出了错误信息,请与系统管理员联系。
这个是已经经过修复后仍然存在的问题,因为提示的是系统表sysobjects表存在问题,且有提示了rid及id,我将此条数据查询出来,交核对了同类型的数据库,也就一个栏位不一样,且表示的是一个所影响的行数,其它并无相应的差别。
数据库事务处理中的数据补偿与异常恢复在数据库系统中,事务处理是一项重要的任务。
当多个操作需要被一起执行时,事务能确保所有操作要么全部成功,要么全部失败回滚。
然而,由于各种原因,事务处理中可能会出现异常情况,例如网络中断、系统故障或者错误的数据输入。
为了保证数据的一致性和完整性,数据库需要具备数据补偿和异常恢复的能力。
一、数据补偿数据补偿是一种通过在事务执行期间记录额外信息,使数据库能够回滚到相应的状态来保证数据一致性的方法。
在执行事务期间,一些操作可能会导致数据库的部分修改,但未能成功完成。
这时,为了回滚事务并恢复到原始状态,数据库可以利用数据补偿的策略来处理。
一种常见的数据补偿策略是利用回滚日志。
在事务执行期间,数据库会记录所有的修改操作,包括更新、插入和删除操作,并将这些操作以日志的形式保存。
如果事务执行过程中出现异常,数据库可以根据回滚日志来撤销已经完成的操作,从而回滚到事务开始前的状态,保证数据的一致性。
此外,还可以使用undo和redo日志来实现数据补偿。
undo日志用于撤销事务期间对数据库做出的修改,而redo日志则用于重做已经提交但未来得及写入磁盘的操作。
通过记录undo和redo日志,数据库可以在异常情况下回滚到一致的状态。
二、异常恢复异常恢复是指在数据库出现故障或不可预见的情况下,将数据库恢复到一致性状态的操作。
在数据库系统中,异常包括硬件故障、崩溃和软件错误等,它们可能导致数据库的损坏或数据丢失。
数据库异常恢复通常包括两个步骤:检测异常和修复异常。
异常检测通过监控系统日志、检查校验和或利用冗余数据等方式来检测数据库是否出现异常。
如果异常被检测到,数据库会进入修复阶段。
修复异常的方式根据具体情况而定。
一种常见的修复方式是通过备份和恢复。
数据库定期进行备份,将数据存储到其他物理介质上。
如果出现异常,可以通过恢复备份来重建数据库。
然而,备份恢复的过程可能比较耗时,因此有时候会使用增量备份和恢复策略来提高效率。
当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。
1. DBCC CHECKDB重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。
use masterdeclare @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 (表名,’’) 修复此表所有的索引。
酒店智能客房控制系统故障排查预案第1章系统概述与故障排查原则 (4)1.1 系统概述 (4)1.2 故障排查原则 (5)1.2.1 及时性原则 (5)1.2.2 优先级原则 (5)1.2.3 系统性原则 (5)1.2.4 逐步排查原则 (5)1.2.5 安全性原则 (5)1.3 安全注意事项 (5)1.3.1 人员安全 (5)1.3.2 设备安全 (5)1.3.3 环境安全 (6)1.3.4 信息安全 (6)第2章系统硬件故障排查 (6)2.1 控制器故障排查 (6)2.1.1 检查控制器电源 (6)2.1.2 检查控制器指示灯 (6)2.1.3 控制器软件检查 (6)2.1.4 控制器硬件检查 (6)2.2 传感器故障排查 (6)2.2.1 检查传感器电源 (6)2.2.2 传感器信号检测 (6)2.2.3 传感器灵敏度检查 (7)2.2.4 传感器故障诊断 (7)2.3 执行器故障排查 (7)2.3.1 检查执行器电源 (7)2.3.2 执行器动作检查 (7)2.3.3 执行器故障诊断 (7)2.4 通信设备故障排查 (7)2.4.1 检查通信设备连接 (7)2.4.2 通信信号检测 (7)2.4.3 通信协议检查 (7)2.4.4 通信设备故障诊断 (7)第3章软件系统故障排查 (7)3.1 系统软件故障排查 (7)3.1.1 故障现象识别 (7)3.1.2 故障原因分析 (7)3.1.3 故障排查步骤 (8)3.2 应用程序故障排查 (8)3.2.1 故障现象识别 (8)3.2.2 故障原因分析 (8)3.3 数据库故障排查 (8)3.3.1 故障现象识别 (8)3.3.2 故障原因分析 (9)3.3.3 故障排查步骤 (9)第4章网络通信故障排查 (9)4.1 网络拓扑分析 (9)4.1.1 拓扑结构确认 (9)4.1.2 网络分段排查 (9)4.1.3 网络流量分析 (9)4.2 通信协议故障排查 (9)4.2.1 协议兼容性检查 (10)4.2.2 协议配置核查 (10)4.2.3 协议状态监控 (10)4.3 网络设备故障排查 (10)4.3.1 设备硬件检查 (10)4.3.2 设备软件配置检查 (10)4.3.3 设备功能监控 (10)4.3.4 故障设备替换 (10)第5章电力供应故障排查 (10)5.1 电源系统检查 (10)5.1.1 确认供电状态:对智能客房控制系统的电源进行检查,确认外部供电是否正常。
检测数据库和修复数据库的方法
1、(所有操作前先将数据库备份)在SQL查询分析器中执行以下语句:(注以下所用的dbname 为数据库名称,请客户手工改为自己的数据库名)
use dbname
dbcc checkdb
2、查看查询结果,有很多红色字体显示,最后结果有这样的提示:
CHECKDB 发现了x个分配错误和x 个一致性错误(在数据库'dbname' 中)。
一般情况下,引起分配错误的原因是磁盘损坏或突然停电;一致性错误可能是数据库中的表或索引坏,一般都可修复。
3、查看红色字体,并把有错误的数据库表名记录下来,或把索引损坏的表名记录下来。
4、把数据库设置为单用户模式,直接在查询分析器中执行以下语句即可:
EXEC sp_dboption 'dbname', 'single user', 'TRUE'
5、进入查询分析器执行如下语句:(分别执行)
A.
use dbname
dbcc checkdb ('dbname',REPAIR_REBUILD)----------------修复数据库索引
B.
use dbname
dbcc checkdb('dbname',repair_allow_data_loss)-------修复数据库
-----注意:这里的A、B可以先执行B后执行A,也可以先执行A,后执行B
6、再执行:dbcc checkdb,检测数据库,出现结果为:
CHECKDB 发现了0个分配错误和0个一致性错误(在数据库'dbname' 中)。
数据库已经修复完毕。
7、取消单用户模式,即直接在查询分析器中执行以下语句即可:
EXEC sp_dboption 'dbname', 'single user','FALSE'
现在可以正常使用了!
8、再用语句
use dbname
dbcc checkdb
检查还是有问题(如:POS_t_daysum 还有问题)可以执行下面操作1.
2.在这里点击编辑
3.点机编辑SQL(E)
4.点击执行(E)
执行成功后,再使用
use dbname
dbcc checkdb
执行后看是否还有分配错误和一致性错误到这里应该是可以了的。