一个奇怪的U8帐套备份失败问题

客户反馈U8帐套很长时间没有进行自动备份了。我们远程检查的时候,尝试手动备份帐套。但是系统显示以下错误:

工作流数据处理失败,SQL SERVER检测到逻辑一致性I/O错误。

第一感觉是数据库出问题了,使用DBCCDBCHECK检查数据库,也显示【逻辑一致性I/O错误】。
使用SQL Server Profiler跟踪帐套备份,抓取相关的SQL脚本,定位到出错的脚本为

if exists (select * from sysobjects where id = object_id(N'[Table_TemplateKind]')and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Table_TemplateKind];

查看该表:SELECT* FROM Table_TemplateKin时报错,判断该表INDEX损坏。使用以下步骤修复数据库表。

1.执行SQL语句,断开除自己外所有用户连接:

declare @sql varchar(100)
while 1=1
begin
select top 1 @sql = 'kill '+cast(spid as varchar(3))
from master..sysprocesses
where spid > 50 and spid <> @@spid and dbid=db_id(' UFDATA_012_2014')
if @@rowcount = 0
break
exec(@sql)
end

2.在单用户模式下,修复数据库:

USE MASTER
GO
sp_dboption 'UFDATA_012_2014', 'single user', 'true'
GO
DBCC CHECKDB(' UFDATA_012_2014', REPAIR_ALLOW_DATA_LOSS)
GO
USE UFDATA_012_2014
GO
exec sp_msforeachtable 'DBCC CHECKTABLE(''?'',REPAIR_REBUILD)'
GO
sp_dboption ' UFDATA_012_2014', 'single user', 'false'
GO

3.重建该表索引:

DBCC DBREINDEX(Table_TemplateKind,'',90)

重新备份帐套成功。

你可能感兴趣的:(一个奇怪的U8帐套备份失败问题)