以上是xkkx同志提供的方法,但是不少朋友说有问题(为什么我用没有呢?奇怪),那大家就按下面的方法和顺序*作吧.一定要按顺序!!以下是综合xkkx,vicent,xingyueth三个人*作的方式.
在查询分析器里运行脚本如下
1 备份数据库 (建立了一个warehousebak表,仔细检查没问题才删除它,切记!!!!)
select * into warehousebak from warehouse
备份optiondata表:
select * into optiondatabak from optiondata
2 导出不重复数据。用distinct函数,重复就放弃
select distinct * into #tmp from warehouse
3 清空warehouse
truncate table warehouse
清空optiondata表
truncate table optiondata
4 建立索引,在查询分析器里运行
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[warehouse]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[warehouse]
GO
CREATE TABLE [dbo].[warehouse] (
[AccountID] [nvarchar] (10) COLLATE Latin1_General_CS_AS NOT NULL ,
[Items] [varbinary] (1200) NULL ,
[Money] [int] NULL ,
[EndUseDate] [smalldatetime] NULL ,
[DbVersion] [tinyint] NULL ,
[pw] [smallint] NULL
) ON [PRIMARY]
GO
CREATE UNIQUE CLUSTERED INDEX [PK_Warehouse] ON [dbo].[warehouse]([AccountID] DESC ) ON [PRIMARY]
GO
运行上面的脚本就在warehouse表中建立索引了.
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OptionData]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[OptionData]
GO
CREATE TABLE [dbo].[OptionData] (
[Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Skillkey] [binary] (10) NULL ,
[GameOption] [tinyint] NULL ,
[Qkey] [tinyint] NULL ,
[Wkey] [tinyint] NULL ,
[Ekey] [tinyint] NULL ,
[ChatWindow] [tinyint] NULL
) ON [PRIMARY]
GO
CREATE UNIQUE CLUSTERED INDEX [PK_Optiondata] ON [dbo].[OptionData]([Name] DESC ) ON [PRIMARY]
GO
上面这段是OptionData的索引脚本.
这两个脚本是给不会建立索引的朋友用的,知道怎么建立就不需要啦
5 把非重复数据导回
insert into warehouse select * from #tmp
6 进入warehouse表内看看,如果仓库空了,就赶紧把这个表删除,把warehousebak表改名字,别弄了.
如果还原数据正确,那就恭喜你,可以把warechousebak,optiondatabak删除了
--------------------------------------------------------------------------------------------------------------我做到第5步出现SQL出现213错误....我想是有重复的数据....
但是用select distinct * into #tmp from warehouse这个没有..发现有错误...
现在玩家的仓库都删了..唉....但是我想知道解决办法...请CT的朋友帮帮我...在线谢谢