客户在使用 K/3 的过程中经常出现掉电、宕机、或是因为病毒原因导致数据库损坏的
现象,而导致 K/3 运行时出现无法建立数据连接、数据库质疑、或是不能恢复账套的现象。
下面提供几种修复数据库的方案:
1.如果数据未被分离,则跳转至第 2 步;如果数据库实体已经被分离成 mdf、ldf 文件,
则首先需要把数据库附加回。
Mdf、ldf 文件如果不能正常附加,则可以通过重建日志的方法附加数据库实体,方案
见文件“数据库事务日志修复.doc”
2.检查 Windows NT/2000 的错误日志(在管理工具->事件查看器->应用程序日志),
看是否能找出问题所在。例如:驱动器空间已满。或者把报错放到 www.google.com
上检索
以下是否前人碰到过类似的问题。
3.用单用户模式启用 SQL Server(适用只能在客户服务器上修复的数据库),防止修
复数据过程中有其他用户做读写操作。
在 管理工具->服务->MsSqlServer,停止服务,启动参数输入 –m,启动后,则处于
单用户状态。此时 sqlserver 处于单用户状态,只允许一个用户登录,其他用户登录时会提
示错误。
4.如果数据库的状态仍旧是质疑、紧急等非正常状态,则可以使用如下语句来处理
use master
update sysdatabases set status = 8 where name = 'db_name'
Go
sp_configure 'allow updates', 0
reconfigure with override
Go
5.执行 DBCC CHECKDB 来检测数据库中存在多少分配错误、多少一致性错误。
6.执行带参数的 DBCC CHECKDB 语句来修复数据库中存在的错误
use master
declare @databasename varchar(255)
set @databasename='AIS20050909101703'------一定要在此手工输入你的账套实体名
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'
7.再次执行 DBCC CHECKDB 来检测数据库是否存在其他错误,或是未修复的错误。
评论6