易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL数据库表坏了的手动恢复方法

      今天接到客户电话,说操作数据无法保存。经过分析,发现他的数据库已经有5G多的大小,而最终发现有张表的索引出错了,用DBCC CHECK也无力回天。
每次用select * from ln003082 语句查询,都报如下错误:
服务器: 消息 605,级别 21,状态 1,行 1
试图从数据库 'ln_fl0125' 中提取的逻辑页 (1:629904) 属于对象 '869578136',而非对象 'LN003082'。
连接中断
没办法,只能想办法恢复了。还好有几位老手在身边。于是通如以下步骤勉强恢复有效数据,当然,有部份单子数据是丢失了。只能叫客户再去补了。
 首先要确定哪些数据回不来了,通过游标来一一确定哪些数据无效了。
declare @bill_no varchar(20)
declare @shop_no varchar(20)
DECLARE  @QTY INT
DECLARE terminal_changecursor CURSOR FOR
   select bill_no,shop_no from terminal_change
   group by shop_no,bill_no
   ORDER by shop_no,bill_no
OPEN terminal_changecursor
FETCH NEXT from terminal_changecursor into  @bill_no ,@shop_no
WHILE @@FETCH_STATUS = 0
BEGIN
 FETCH NEXT from terminal_changecursor into  @bill_no ,@shop_no
 PRINT  @bill_no +'-'+@shop_no
 IF  NOT (
(@bill_no='MB10010033' AND @shop_no = 'P9ZT') OR  
(@bill_no='MT90910001' AND @shop_no = 'P9ZT') OR
(@bill_no='MT00110002' AND @shop_no = 'P10D') OR
(@bill_no='MB10010034' AND @shop_no = 'P9ZT') OR
(@bill_no='MB10010035' AND @shop_no = 'P9ZT') 
 
)
 select @QTY=sum(bill_qty) from LN003082 WHERE   bill_no=@bill_no AND  shop_no=@shop_no
ENDEND
DEALLOCATE terminal_changecursor
GO
通过上面的语句,可以查到哪些单号的数据出了问题。用IF跳过有问题的数据,当select sum通过游标查询时,如果有问题的数据,就会停下来中断,根据print出来的单号,将其加入下次IF中,这个步骤很枯燥。不过一般不会出现过多丢失的数据,也只能这样一一确定了。
接下来就是根据查询出来有问题的数据,进行过滤恢复了。
恢复方法脚本如下:
主要有3步。
--说明:终端变动数据表坏了,丢失五张数据,请通知重传
--1。重建表LN003082为LN003082_new,用于转移有效数据
select * into LN003082_ne


相关文档:

Sql server 2005 登录扫盲

1.       在使用sql server 之前呢,最好对其进行配置
(1)  配置工具->Sql server configuration Manager  
        选择Sql server 2005网路配置 下的 MSSQLSERVER的协议 在窗口右边的
TCP/IP协议右键属性,配置如下
 
&n ......

动态创建sql实例

string   error_syntaxfromSQL,   error_create  
  string   new_sql,   new_syntax  
  new_sql   =   'SELECT   emp_data.emp_id,   '   &  
    & ......

SQl 数据库相关操作

1:
Sql server 2005日志文件太大,使其减小的方法
运行下面的三行 PMDataCenter  为数据库名:
backup log PMDataCenter with NO_LOG
backup log PMDataCenter with TRUNCATE_ONLY
DBCC SHRINKDATABASE(PMDataCenter) ......

SQL Server 2005 (MSSQLSERVER) 服务不能启动

SQL Server 2005 (MSSQLSERVER) 服务不能启动
原因:VIA协议”给启用了,停用“VIA协议”问题解决。
"VIA协议"停用方法:开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager ->打开后找到"SQL Server 2005 网络配置"->MSSQLSERVER 属性的协议 &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号