易截截图软件、单文件、免安装、纯绿色、仅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


相关文档:

航空公司管理系统(VC++ 与SQL 2005)

系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
      这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

Sql函数大全

--聚合函数
use pubs
go
select avg(distinct price)  --算平均数
from titles
where type='business'
go
use pubs
go
select max(ytd_sales)  --最大数
from titles
go
use pubs
go
select min(ytd_sales) --最小数
from titles
go
use pubs
go
select type,sum(price),sum(advance)  ......

SQl 数据库相关操作

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

使用Hibernate+MySql+native SQL的BUG,以及解决办法

本来是mssql+hibernate+native SQL 应用的很和谐
但是到了把mssql换成mysql,就出了错(同样的数据结构和数据)。
查询方法是:
String sql =
"select id XXX_ID from t_tab";
List<Map> list = session.createSQLQuery(sql)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
.list();
错 ......

SQL Server Linked Server 访问远程数据库

在使用SQL Server数据库时, 如果需要访问远程的另外一个数据库, 那么可以使用Linked Server来实现这个功能, 很方便. 本文总结了自己在使用Linked Server功能时遇到的几个问题, 如果稍不注意,很可能出现各种错误.
1)创建了一个新的Linked Server后, 需要首先设置login 账户, 右键->属性->Security, 如图
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号