SQL数据库分配性错误如何修复

分享到:

2022-09-25 22:02:41

SQL Server服务器在使用中有时由于非正常关闭或重新启动造成一致性错误和分配错误,可以使用DBCC checkdb语句来查询错误及修复。以下是修复方法。

 
  1. --重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下语句。  
  2. use master   
  3. go  
  4. declare @databasename varchar(255)  --@databasename 要修复的数据库名称  
  5. set @databasename='TCPay'  --请替换为要修复的数据库名称  
  6. exec sp_dboption @databasename, N'single', N'true--将目标数据库置为单用户状态   
  7. dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)  --允许丢失内容来修复  
  8. dbcc checkdb(@databasename,REPAIR_REBUILD)  --直接修复  
  9. exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态   

为了保证数据库的正常使用,建议大家做到以下几点:

1、服务器配备UPS,防止断电时的非正常关机;

2、做好数据库的备份工作;

3、经常使用DBCC checkdb('数据库名称')语句查看数据库是否存在错误。

 

一、把数据库置为单用户模式:

sp_dboption '数据库名称', 'single user', 'true'

 

二、在允许数据丢失情况下修复数据库:

DBCC checkdb('数据库名称',REPAIR_ALLOW_DATA_LOSS)

如果执行一次不行,可以在多执行几次直到没有再提示数据库有错误为止。

 

三、把数据库重新设置为多用户模式:

sp_dboption '数据库名称', 'single user', 'false'

这样这个数据库的错误修复就完成了。然后停止掉SQLSERVER,重新启动服务器就可以。

 

这种方法对于一般出现问题可以不用安装企业管理器,直接在服务器用OSQL –E 进入数据库,然后通过上面两条命令来修复数据库。这样速度比较快!

 

 其他人提供的方法:

一、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) 

exec sp_dboption @dbname,'single user','false'

声明:此篇为用友服务中心文章,转载请标明出处链接:
  • 相关文章
  • 热门下载
  • 数据修复
  • 热门标签
合作伙伴