数据库修复Part1:创建自己的测试corrupt数据库
2012-08-04 15:29
176 查看
以前看Pual写过很多数据恢复的文章,他很多的测试都是自己创建的Corrupt数据库,其实我们自己也可以。
1. 创建数据库数据表插入数据:
use master
go
create databasecorrupt
use corrupt
go
create tabletest(IDint, namevarchar(10))
declare @int asint
set @int = 1
while @int <20
begin
insert intotestvalues(@int,'allentest')
set @int += 1
end
2. 使用DBCC IND查看Test表所在的PageID
dbcc ind(corrupt,test,1)
3. 用DBCC PAGE查看TEST表的内容:
dbcc traceon(3604,-1)
go
dbcc page(corrupt,1,55,1)
这里我们只修改Slot 1数据,偏移地址为78,转化为10进制为120.
所以当前Slot1的实际地址为:55*8192+120=450680
4. 停掉SQL Server用XVI32打开数据文件然后输入地址找到对应的数据(可以看到数据与Step3中看到的数据一致)。
5. 对数据进行修改保存关闭XVI32。
6. 重启SQL Server然后用DBCC PAGE看Page 55 Slot1内容(已经被更改)
7. DBCCCHECKDB检查数据库发现下面的错误:
dbcc checkdb withno_infomsgs
Msg8928, Level 16, State 1, Line 1
Object ID2105058535, index ID 0, partition ID 72057594038779904, alloc unit ID72057594039828480 (type In-row data): Page (1:55) could not be processed. See other errors for details.
Msg8939, Level 16, State 98, Line 1
Table error: ObjectID 2105058535, index ID 0, partition ID 72057594038779904, alloc unit ID72057594039828480 (type In-row data), page (1:55). Test (IS_OFF (BUF_IOERR,pBUF->bstat)) failed. Values are 12716041 and -4.
这样我们就创建了一个Corrupt的数据库,稍后我会花时间测试恢复(page restore/ dbcc checkdbrepair_allow_data_loss/rebuildSQL Server log),然后把测试步骤发出来.
如果你不想自己创建的话,也可以使用Paul提供的两个Corrupt数据库做测试。
1. 创建数据库数据表插入数据:
use master
go
create databasecorrupt
use corrupt
go
create tabletest(IDint, namevarchar(10))
declare @int asint
set @int = 1
while @int <20
begin
insert intotestvalues(@int,'allentest')
set @int += 1
end
2. 使用DBCC IND查看Test表所在的PageID
dbcc ind(corrupt,test,1)
3. 用DBCC PAGE查看TEST表的内容:
dbcc traceon(3604,-1)
go
dbcc page(corrupt,1,55,1)
这里我们只修改Slot 1数据,偏移地址为78,转化为10进制为120.
所以当前Slot1的实际地址为:55*8192+120=450680
4. 停掉SQL Server用XVI32打开数据文件然后输入地址找到对应的数据(可以看到数据与Step3中看到的数据一致)。
5. 对数据进行修改保存关闭XVI32。
6. 重启SQL Server然后用DBCC PAGE看Page 55 Slot1内容(已经被更改)
7. DBCCCHECKDB检查数据库发现下面的错误:
dbcc checkdb withno_infomsgs
Msg8928, Level 16, State 1, Line 1
Object ID2105058535, index ID 0, partition ID 72057594038779904, alloc unit ID72057594039828480 (type In-row data): Page (1:55) could not be processed. See other errors for details.
Msg8939, Level 16, State 98, Line 1
Table error: ObjectID 2105058535, index ID 0, partition ID 72057594038779904, alloc unit ID72057594039828480 (type In-row data), page (1:55). Test (IS_OFF (BUF_IOERR,pBUF->bstat)) failed. Values are 12716041 and -4.
这样我们就创建了一个Corrupt的数据库,稍后我会花时间测试恢复(page restore/ dbcc checkdbrepair_allow_data_loss/rebuildSQL Server log),然后把测试步骤发出来.
如果你不想自己创建的话,也可以使用Paul提供的两个Corrupt数据库做测试。
相关文章推荐
- 数据库修复Part1:创建自己的测试corrupt数据库
- 如何用MYsql-Front工具抒写sql语句,创建出一个自己想要的数据库
- 创建、分离、重新附加并修复一个置疑数据库
- idea2017创建javaweb项目并导入jdbc包,测试链接数据库
- 代码实现数据库的创建和查询(随便写点,只为记录自己的成长过程)
- Caffe - Ubuntu下搭建自己的数据库训练和测试caffenet
- 自己写的cnCheckTreeView操作函数(数据库分级函数)测试通过(XP+D2009)
- Android开发之创建自己的内容提供器并测试
- 使用JMeter创建数据库(Mysql)测试
- 使用JMeter创建数据库(Mysql)测试
- oracle创建数据库后创建自己的用户
- 使用JMeter创建数据库(Mysql)测试
- C# Owin 创建与测试自己的中间件Middleware(二)
- 【系列】使用springmvc+mybatis创建Web应用(二)—— 数据库、配置和测试
- 接口测试-工作心得记录四(多接口调用和对应数据库表的创建,修改)
- Caffe学习笔记1:linux下建立自己的数据库训练和测试caffe中已有网络
- 自己手动创建dataset的方法(不用从数据库倒入)
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- 使用JMeter创建数据库(Mysql)测试