2023年12月19日发(作者:)

[服务器架设完整指南]

准备工具:机器一台(嘿嘿,罗嗦)MU服务器端版本一套,MS SQL2000

首先安装SQL 2000(数据库),一般网上都有下,搜索一下!把服务器端放在D盘, 服务器端文件夹名可起名为Muserver,然后打开SQL企业管理器(开始-程序-Microsoft sql server-企业管理器),新建数据库MuOnline和Ranking!然后还原数据库,一般版本带的数据库都在DB文件夹里!然后建立数据源(开始-程序-管理工具-数据源 (ODBC)),一般服务器端版本都有ODB自动建立,点一下就行,如果没有就要打开数据源 (ODBC)自己建立了。然后,就是改IP地址了,用字符替换器或手动,把服务器端的配置文件的IP改成自己外网的IP(如局域网就改成局域网的),最后改启动项目的第4个,和第8个 程序,右点属性,把里面的IP改了!然后依次启动1-8,就行了 咔咔~我写的那么明白,应该都能看懂了吧!

------------------------------------------------------------------------------------------------------------------------------------

综合新手问题集!!!

1关于连线1分钟掉线答:服务器端口55901不变 客户端口改为444052关于网页连不上答:SQL 右键属性 选择安全性 SQL和WINDOWS

网页文件有问题(原始版本没问题)我刚才就这个问了搞了3个小时多3 转生数据问题答:在你的网页文件夹里面 名:4:关于数据源的建立最新2版本 在-管理工具-ODBC数据源自动建立.reg5关于web连接限制答:WIN2000 PRO 限制10人 服务器版的10000人 (如果能破解限制10人的请留言)6关于启动程序运行错误答:数据库和数据源 还有IP没改好7关于网页IP答:只需要改 里面的IP8:关于启动程序的IP答:唯我2版本的 不需要更改 保留127.0.0.1 只需要更改CS里面的9关于架设MU SF配置 最重要的是内存答:请把虚拟内存调高 大概800M-2G10关于架设SF基本文件答:SF服务器文件+网页注册文件11关于0。97支持官方0。97B的更改法答:

修改D:

以下:

IP = 你的IP

PORT = 55557

[GameServerInfo]

ClientExeVersion = 0.97.02

ClientExeSerial = UK4l32T426CaMOy9

LootingTime = 10

--------------------------------------------

到这里的话,服务器可以正常启动,但不能进入游戏,会提示“无法连接FTP”

2

修改:

[FtpServerInfo]

Address =

Port = 21

ID = MuOnline

PASS = MuOnline

[GameServerInfo]

ClientVersion = 0.97.02

ClientVersion_TEST = 0.97.02

VersionFileName =

DownLoadType = 0

FTP中的IP改为,就不用自己建立FTP了,玩家点选你的服务器会自动连到9C的FTP去更新为最新版本!

3

修改:

“0.97.02”12 关于字符替换器答:小心使用 除了需要更改的IP 其他最好不用动 包括主页文件13关于战盟无法解散答:直接按确定 不需要输入号码

转自:magic1234

Q:内网转外网需要改哪些IP?

A:只需要把D:,D:,D:,D:里的IP改成你的花生壳域名或你的IP!其他的IP使用127.0.0.1!

Q:有谁知道添加帐号后出现付费信息的处理方法?

A:把VI_CURR_INFO的Bill_Section字段改为6试试

Q:怎么解决:SQL数据库连接失败!请联系管理员解决!

A:自己的SQL用户和密码在:开始-程序-Microsoft SQL Server-企业管理器-SQL SERVER组-安全性-登陆

把你自己的用户名,密码填到里面

Q:为什么我的CS 是OFF状态?

A:CS OFF状态的问题!至于能不能解决你的问题就不一定了

就是在 CS程序的左边~有你服务器的名字~然后点击进去看看是不是红色的

Q:为什么我登陆1分钟就断线?

A:登陆后一分钟自动断线,是因为使用了55901端口登陆,改成44405端口登陆就可以解决了!

Q:怎么才算正确的退出服务器?

A:你先在GS上面的菜单里选择关闭服务器的时间,1,3,5分钟自己选。等提示所有连接断开后。再关闭,无论报什么错都无所谓了。不会回档的

Q:怎么手动添加帐号?

A:帐号手工添加办法:

打开表的方法:SQL企业管理器-找到你的MUONLINE数据库-表-对里面某个表(比如下面提到的”MEMB_INFO“)点右键-打开表-返回所有行

第一步,MANG_INFO这个表里按其它帐号的规格添加

具体来说,mang_guid这里,按顺序编号;mang_id这是填帐号的;mang_pwd这里密码;mang_name注册时,这里是你的真实姓名;剩下的按其它帐号的规格自己随便写;但后面的这些内容要和这里保持一致;

第二步,打开AccountCharacter表

刚才MANG_INFO表中mang_guid处填写的序号为几便在几的位置(Number处)上添上刚才的账号(mang_id);

第三步,MEMB_INFO这个表里按其它帐号的规格添加

具体来说,memb_guid这里,按顺序编号;memb_id这是填帐号的;memb_pwd这里密码;memb_name注册时,这里是你的真实姓名;sno_numb这个比较重要,可以随便用数字,但是在后面第四步时必须有一项和这里得相同;phon_numb身份证号码,删除人物时要用,mail_addr这里是填你的EMAIL;

第四步,VI_CURR_INFO这个表里按其它帐号的规格添加

这是一个收费的表,ends_days表示费用的终止日期,memb_id这里表示对应的交费的帐号,memb_guid这个表示收费项目对应的编号不过不一定要和帐号表相同,sno_numb这个比较重要了,一定要和帐号表里的sno_numb相同。

Q:为什么SQL的文件逐渐增大?

A:下载一个SqlLogClear 中文名叫:SqlServer日志清除专家 v1.2

然后解压,运行

服务器名填:localhost

用户指你的SQL用户名:一般MuOnline都是用的SA

密码是指你SQL超级用户SA的密码:你自己设置的哦,不要问我要,嘎嘎~

然后点连接服务器选择:数据库为MuOnline

再点压缩数据库

OK啦 再看看你的硬盘?是不是空了很多?

或使用全自动脚本,把以下内容保存文件名为放到开始菜单的启动栏里,每次重起后自动清空网络共享记录,游戏LOG和SQL日志:

net share c$ /del

net share d$ /del

net share admin$ /del

net share ipc$ /del

del d:muservercsLOG_ERROR /q

del d:muservercsLOG_GSINFO /q

del d:muserverDataServer1log /q

del d:muserverDataServer2log /q

del d:muserverExDBLog /q

del d:muserverGameServerlog /q

del d:muserverJoinServerlog /q

del d:muserverMU2003_EVENT_SERVERLOG_ERROR /q

del d:muserverMuManagerServerlog /q

del d:muserverRankingServerLOG_ERROR /q

del d:muserverRankingServerLOG_POINT /q

重整数据库

请使用以下部份资料时,确定你已备份好你的数据库,免的出现无法补救的结果

升级数据库转移资料的完美方法

用数据库日志文件恢复数据库

自动删除共享、日志

删除MEMB_INFO或VI_CURR_INFO重复数据的方法(增快登入时间)

快速封号

快速检索日志文件的方法

服务器数据库完全优化指南,提速提速再提速

清掉optiondata与warehouse重复资料方法(处理登陆和打开仓库延迟的方法)

Q:求全服务器清空所有人物身上物品及仓库物品办法 A : use muonline update character set

Inventory=null update warehouse set Items=null 很可怕的命令,慎用。 Q:Monster attribute max

over 235 出错 用了加入黄金部队的刷怪文件后就出现这个问题, 点确定后GS直接关闭,

但把怪黄金部队那几行去掉后就没事了,有没有哪位大虾知道哪出毛病了? 请指教,谢谢! A:晕~又一次在发完帖后自己搞定~郁闷!~ // ------------------------------------------------------------ //

黄金部队 // ------------------------------------------------------------ 3 78 3 30 10 10 251 245 -1 5 // 黄金哥布林 79 0 30 10 10 240 240 -1 2 // 黄金火龙王 80 7 30 10 10 66 222 -1 3 // 黄金巫师王

81 7 30 10 10 80 33 -1 3 // 黄金美人鱼 82 8 30 10 10 75 133 -1 5 // 黄金破坏骑士 83 8 30 10

10 123 73 -1 5 // 黄金铁轮战士 end <----原文件少了这个END!!

---------------------------------------------------------------------------

关掉法师守护魔法的设置关键是现在法师只要有4200的敏捷和7500的智力就是不死的了,不管你有多高的攻击力打他都是MISS,如果要关掉这个魔法要在那里设置?文件在X:Muserverdatalangkor文件夹里的skill(kor).txt,原文件有这么一段:16 "家匡官府绢" 0 0 70

22 6 17 1 0 0 0改成16 "家匡官府绢" 0 0 70 22 6 17 0 0 0 0#你把倒数第4个数字1改成0就可以禁用守护之魂了(学了的用不了,还没学的学不了)

-----------------------------------------------------------------------------------------

魔剑拿毁灭+盾牌+戴头盔方法用SQL查询器打开muonline数据库,打开character表~在inventory上看到有一段很长的代码~~例如下面是一个魔剑身上穿着的装备代码~(太长了,后面的一部分删了~)0x90DC6C000000007F0000CE5C4F0000E75C48000000007F0000035C4E00000000FF3431235C4E00000000FF0A00FFFFFFFFFFFFFFFFFFFF635C4E00000000FF94FD815CDD00000000C04200A158F9A00AC584000000000FF0000A9585600000000FFF824A9584000000000FF4800D2204022A058FF00000090DC6C000000007F0000 卓越圣者之弩CE5C4F000000007F0000 卓越传说之盾E75C48000000007F0000 卓越魔王头盔只要人物能用的都能改上~那把圣者之弩只能选择人物画面上看到,进入画面后就消失了~魔剑戴的头盔是不能除下的~还有这种方法1级的人物都可以用~后面还有个magiclist的项~只要修改成下列代码~就所有的魔法都能用(法师,魔剑)0x1100000B00000C00000ADEFF0000FF0000FF0000FF0000FF0000也适用于1级人物Tips:魔剑戴革盔特别的帅!!!!!!!!!!!! ---------------------------------------------------------------------------------修改守卫,使其变得有"责任心"的NPC的方法[原创]修改守卫,使其变得有"责任心"的NPC的方法修改DATA下的,找到下面的代码替换一下就可以了:247 1 "版厚捍" 50 10000 0

900 1200 70 20 950 100 0 0 6 7 400 1500 10 1 200 10 0 0 0 0 0 0249 1 "版厚捍" 50 10000 0 900

1200 70 20 950 100 2 0 6 7 400 1500 10 1 200 10 0 0 0 0 0 0我的已经测试通过,遇到红名出来就杀!给你们的服务器提供点新的乐趣--------------------------------------------------------------------------------处理登陆和打开仓库延迟的方法:最后更新xkkx原话:sorry,刚才开回去了。我现在先说说原理:大家应该知道,sql得查询得运算快慢是与索引有关的,当某个数据库记录的数据达到上百万条以后,数据库又没有索引,这样dataserver 的处理时有一个时间问题,在人数达到500人以后,基本上处理查询时间要5秒以上,再加上warehouse的记录有重复数据,而且没有索引,所以登陆就很慢了,大家可以在dataserver上看到recvQ:XXXXX的数字,这表示目前服务器还有多少条查询或修改命令等待处理。 在数据库muonline中有存储过程里除了处理item(复制)得程序,没有其它的,所有处理全是实时交换的,那么仔细看一下,其交换的数据,主要就是对character,optiondata,warehouse进行处理,对于character 已是做了索引的,那么现在要处理的就是另外两个表。方法:1、清除optiondata表:delete optiondata 2、处理warehouse重复数据:为避免错误,先建一个备份表select * into warehousebak from warehouse

查找重复数据:select accountid into warehousecf from warehouse group by accountid having

count(*)>1 倒出重复数据: select * into warehousesj from warehouse where accountid

in (select accountid from warehousecf) 清理warehouse重复数据:delete warehouse

where accountid in (select accountid from warehousecf) 把重复数据用导出数据方式为access表(warehousesj) 在office下,打开你导出的表,删除相同得,但是要保留一个!!!! 把表导回muonline,导入前,删了 warehousesj表, 最后把数据插入warehosue: insert into warehouse select * from warehousesj 你可以建一个索引。

3.在windows任务 管理器中,把dataserve 55960 进程设为实时差不多了,我的服务器现900多人了,程序处理时间基本为0,偶耳recvQ:50 以上是xkkx同志提供的方法,但是不少朋友说有问题(为什么我用没有呢?奇怪),那大家就按下面的方法和顺序*作吧.一定要按顺序!!以下是综合xkkx,vicent,xingyueth三个人*作的方式.在查询分析器里运行脚本如下1 备份数据库 (建立了一个warehousebak表,仔细检查没问题才删除它,切记!!!!)select * into

warehousebak from warehouse 备份optiondata表:select * into optiondatabak from optiondata

2 导出不重复数据。用distinct函数,重复就放弃 select distinct * into #tmp from warehouse3

清空warehousetruncate table warehouse 清空optiondata表truncate table optiondata4 建立索引,在查询分析器里运行if exists (select * from ects where id =

object_id(N'[dbo].[warehouse]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table

[dbo].[warehouse]GOCREATE 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 ects where id = object_id(N'[dbo].[OptionData]')

and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[OptionData]GOCREATE

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删除了处理登陆和打开仓库延迟的方法之前有很多朋友发过类似的贴子,只是写得都不是很清楚,也没有解决其中几个很关键的问题,导致方法失败。我这里重新整理一下,大家可以完全放心的使用。先说原理:sql得查询得运算快慢是与索引有关的,当某个数据库记录的数据达到上百万条以后,数据库又没有索引,这样dataserver 的处理时有一个时间问题,在人数达到500人以后,基本上处理查询时间要5秒以上,再加上warehouse的记录有重复数据,而且没有索引,所以登陆就很慢了,大家可以在dataserver上看到recvQ:XXXXX的数字,这表示目前服务器还有多少条查询或修改命令等待处理。

在数据库muonline中有存储过程里除了处理item(复制)得程序,没有其它的,所有处理全是实时交换的,那么仔细看一下,其交换的数据,主要就是对character,optiondata,warehouse进行处理,对于character 已是做了索引的,那么现在要处理的就是另外两个表。首先记得在SQL的企业管理器中备份你的数据库,这样可以随时恢复。我每次对数据库*作,都会事先备份一下,这是一个很好的习惯。在查询分析器里对muonline数据库*作,输入以下SQL运行脚本1、备份warehouse数据表select * into warehousebak from warehouse2、备份optiondata表:select * into optiondatabak from optiondata3、删掉仓库是空的记录 delete from

warehouse where items is null4、导出不重复数据。 select distinct * into warehousetmp from

warehouse这里注意了,虽然这里使用了distinct参数,但是生成的warehousetmp临时表中依然会有重复的数据,主要就是ITEMS这个字段不同了,我们再用下面的命令查询select

accountid from warehousetmp group by accountid having count(*)>1数据应该不会很多,我4万多用户才12条重复的记录。大家记下重复的帐号,如果对SQL语句不太熟,就去企业管理器中条件查询帐号,删除重复的记录,记得要保留一条喔。5、清空warehousetruncate table

warehouse6、清空optiondata表truncate table optiondata7、建立索引,在查询分析器里运行if

exists (select * from ects where id = object_id(N'[dbo].[warehouse]') and

OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[warehouse]GOCREATE 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]GOCREATE

UNIQUE CLUSTERED INDEX [PK_Warehouse] ON [dbo].[warehouse]([AccountID] DESC )

ON [PRIMARY]GO运行上面的脚本就在warehouse表中建立索引了.8、继续建立索引if exists

(select * from ects where id = object_id(N'[dbo].[OptionData]') and

OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[OptionData]GOCREATE 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]GOCREATE UNIQUE CLUSTERED INDEX [PK_Optiondata] ON

[dbo].[OptionData]([Name] DESC ) ON [PRIMARY]GO上面这段是OptionData的索引脚本.这两个脚本是给不会建立索引的朋友用的,知道怎么建立就不需要啦9、把非重复数据导回insert into warehouse select * from warehousetmp 第9步*作如果报错,那就是你导出的warehousetmp数据中依样有重复数据,重复前面的检查步骤。如果没有报错,那么恭喜你了,你的warehouse,optiondata表索引建立成功了。开启服务器证实一下,如果无误,就可以删掉warehousetmp,warehousebak,optiondatabak三张表了,不删也没有问题。索引建立之后,打开仓库和登陆的速度会明显加快,我的服务器平均在线人数1000人,建立之前高峰期打开仓库需要1分钟,现在最多5秒,大家试试吧!不懂的问我,共同进步!

-----------------------------------------------------------------------------------解决扔东西掉线问题只要将DATAKOR文件夹里面的item(Kor).txt和skill(Kor).txt放去DATA目录中就可以了..我试了半个多小时全部东西都检过都未掉过线...大家可以试试 解决进入游戏乱码的问题,不需要内码转换软件看到有人在问,有人提出用内码转换软件解决其实不需要,只要你的IE安装了繁体中文显示支持就不会存在乱码的问题。以下写给菜鸟安装繁体支持:点击IE的查看,选编码,选其他,选繁体中文,然后会让你下载安装,下吧„„然后就快去进入游戏吧至于繁体中文的输入就不用我说了吧发1个将GS能放任何目录的修改方法用ue查GS4D 3A

5C 00 63 3A 5C 4D 75 70 72 6F 6A 65 63 74 5C 64 61 74 61 5C改为2E 2E 5C 64 61 74 61 5C

00 00 00 00 00 00 00 00 00 00 00 00 00 00绝对地址db24c內外網都可以進的方法!0 "Mu1-1"

"192.168.0.4" 55901 "SHOW"1 "Mu1-1" "222.10.150.10" 55901 "SHOW"前面一個是內網的。第2個是外網的。。。我就是這麽搞的。。決對成功

----------------------------------------------------------------------------进入后就断线的可用方法进入后就断线的可能方法程序用UE查找 8B1485D0CF86003B510474 把最后的74

改成EB测试早就通过我补一下.....大家还要注意一下你的客户端....有时断线也和客户端有关系....我昨天就是这样.换了一个就好了....可能许多人都碰到一分钟断线的问题,我也碰到过,经过几天泡网和试验,找到了解决办法:很多人可能是受到0.74版服务器的误导,只用55901连,这时就会出现一分钟断线,原因是55901没有连接到cs里进行认证(而在0.74中因为0.74还是免费的,所以也就不需cs进行认证),一分钟后就会认为你是非法用户把你踢出去,也就是掉线。正确的方法是:用字符替换器,文件类型为*.*(注意是*.*而不是以前所说的三种文件)把所有的44405的端口改成55901,然后客户端用44405去登陆。

[此贴子已经被作者于2004-11-28 1:22:51编辑过]

仓库延迟解决办法

我现在先说说原理:大家应该知道,sql得查询得运算快慢是与索引有关的,当某个数据库

记录的数据达到上百万条以后,数据库又没有索引,这样dataserver 的处理时有一个时间问题,在人数达到500人以后,基本上处理查询时间要5秒以上,再加上warehouse的记录有重复数据,而且没有索引,所以登陆就很慢了,大家可以在dataserver上看到recvQ:XXXXX的数字,这表示目前服务器还有多少条查询或修改命令等待处理。

在数据库muonline中有存储过程里除了处理item(复制)得程序,没有其它的,所有处理全是实时交换的,那么仔细看一下,其交换的数据,主要就是对character,optiondata,warehouse进行处理,对于character 已是做了索引的,那么现在要处理的就是另外两个表。

方法:1、清除optiondata表:delete optiondata

2、处理warehouse重复数据:为避免错误,先建一个备份表

select * into warehousebak from warehouse

查找重复数据:select accountid into warehousecf from warehouse group by accountid

having count(*)>1

倒出重复数据: select * into warehousesj from warehouse where accountid in (select

accountid from warehousecf)

清理warehouse重复数据:delete warehouse where accountid in (select accountid from

warehousecf)

把重复数据用导出数据方式为access表(warehousesj)

在office下,打开你导出的表,删除相同得,但是要保留一个!!!!

把表导回muonline,导入前,删了 warehousesj表,

最后把数据插入warehosue: insert into warehouse select * from warehousesj

你可以建一个索引。

3.在windows任务 管理器中,把dataserve 55960 进程设为实时

差不多了,我的服务器现900多人了,程序处理时间基本为0,偶耳recvQ:50

以上是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 ects 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 ects 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删除了

处理登陆和打开仓库延迟的方法

之前有很多朋友发过类似的贴子,只是写得都不是很清楚,也没有解决其中几个很关键的问题,导致方法失败。我这里重新整理一下,大家可以完全放心的使用。

先说原理:sql得查询得运算快慢是与索引有关的,当某个数据库记录的数据达到上百万条以后,数据库又没有索引,这样dataserver 的处理时有一个时间问题,在人数达到500人以后,基本上处理查询时间要5秒以上,再加上warehouse的记录有重复数据,而且没有索引,所以登陆就很慢了,大家可以在dataserver上看到recvQ:XXXXX的数字,这表示目前服务器还有多少条查询或修改命令等待处理。

在数据库muonline中有存储过程里除了处理item(复制)得程序,没有其它的,所有处理全是实时交换的,那么仔细看一下,其交换的数据,主要就是对character,optiondata,warehouse进行处理,对于character 已是做了索引的,那么现在要处理的就是另外两个表。

首先记得在SQL的企业管理器中备份你的数据库,这样可以随时恢复。我每次对数据库*作,都会事先备份一下,这是一个很好的习惯。

在查询分析器里对muonline数据库*作,输入以下SQL运行脚本

1、备份warehouse数据表

select * into warehousebak from warehouse

2、备份optiondata表:

select * into optiondatabak from optiondata

3、删掉仓库是空的记录

delete from warehouse where items is null

4、导出不重复数据。

select distinct * into warehousetmp from warehouse

这里注意了,虽然这里使用了distinct参数,但是生成的warehousetmp临时表中依然会有重复的数据,主要就是ITEMS这个字段不同了,我们再用下面的命令查询

select accountid from warehousetmp group by accountid having count(*)>1

数据应该不会很多,我4万多用户才12条重复的记录。大家记下重复的帐号,如果对SQL语句不太熟,就去企业管理器中条件查询帐号,删除重复的记录,记得要保留一条喔。

5、清空warehouse

truncate table warehouse

6、清空optiondata表

truncate table optiondata

7、建立索引,在查询分析器里运行

if exists (select * from ects 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表中建立索引了.

8、继续建立索引

if exists (select * from ects 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的索引脚本.

这两个脚本是给不会建立索引的朋友用的,知道怎么建立就不需要啦

9、把非重复数据导回

insert into warehouse select * from warehousetmp

第9步*作如果报错,那就是你导出的warehousetmp数据中依样有重复数据,重复前面的检查步骤。如果没有报错,那么恭喜你了,你的warehouse,optiondata表索引建立成功了。开启服务器证实一下,如果无误,就可以删掉warehousetmp,warehousebak,optiondatabak三张表了,不删也没有问题。

索引建立之后,打开仓库和登陆的速度会明显加快,我的服务器平均在线人数1000人,建立之前高峰期打开仓库需要1分钟,现在最多5秒,大家试试吧!不懂的问我,共同进步!

解决某些服务器登陆慢的办*,

方*一

此方*适用于7.0和2000。

1、在查询分析器中执行:

exec sp_detach_db 'DB_Name'

2、在我的电脑中将日志的物理文件xxx_改名。

3、在查询分析器中执行:

exec sp_attach_single_file_db 'DB_Name','C:Program FilesMicrosoft SQL

ServerMSSQLDataDB_'

4、如果上一步成*,将步骤2中改名后的文件删除。如果上一步不成*,改回原来的文件名,

用sp_attach_db将数据库附加到服务器,然后用方*二。

方*二

6.X中

DUMP TRANSACTION test2 with NO_LOG

DUMP TRANSACTION test2 with TRUNCATE_ONLY

将上面的语句多次执行,直到日志缩小。

7.0和2000中

backup log test2 with NO_LOG

backup log test2 with TRUNCATE_ONLY

DBCC SHRINKDATABASE(test2)

将上面的语句多次执行,直到日志文件缩小。

上面的方*治标不治本,标本兼治要用下面的方*。

方*三:

--6.X和7.0中改为日志处于截断模式,2000中恢复模型改为简单恢复

exec sp_dboption 'test2','trunc. log on chkpt.','on'

--7.0和2000中设为自动收缩,6.x中不用执行。

exec sp_dboption 'test2','autoshrink','on'

通常用于测试环境。

方*四:

--7.0中改为日志不处于截断模式,2000中恢复模型改为完全恢复

exec sp_dboption 'test2','trunc. log on chkpt.','off'

--7.0和2000中设为自动收缩,6.x中不用执行。

exec sp_dboption 'test2','autoshrink','on'

建立作业,每半个小时一次日志备份,每天一次完全数据库备份。

7.0和2000中:在Log收缩到正常大小后,将autoshrink选项设置为off。

通常用于真实环境。

在产品化系统中将autoshrink选项设置为开启状态并非明智之举(除非您真的需要这样做),这是因为,当您的系统正在忙于完成其它任务时,autoshrink选项可能会同时启动,从而降低系统运行速度。然而,对于那些数据库管理员无暇估计并且数据库尺寸有可能在您毫无察觉的情况下超出控制范围的桌面或远程系统来说,开启这一选项却是一种非常有效的措施。

收缩事务日志

在下列情况下,日志文件的物理大小将减少:

*执行 DBCC SHRINKDATABASE 语句时。

*执行引用日志文件的 DBCC SHRINKFILE 语句时。

*自动收缩*作发生时。

日志收缩*作依赖于最初的日志截断*作。日志截断*作不减小物理日志文件的大小,但减小逻辑日志的大小,并将没有容纳逻辑日志任何部分的虚拟日志标记为不活动。日志收缩*作会删除足够多的不活动虚拟日志,将日志文件减小到要求的大小。

按下面任一方式控制事务日志的大小:

*在维护日志备份序列时,调度 BACKUP LOG 语句按间隔发生,以使事务日志不致增长到超过预期的大小。

*当不维护日志备份序列时,指定简单恢复模式。

众联网络

一机多线完美解决CUP100%

方法:

(1)先修改d:,

d:,

d:

三个文件为如下内容:(好象只修改也行.安全起见,全改了)

0 "服务器名" "IP" 55901 "show"

1 "服务器名-1" "IP" 55902 "show" --------2线

2 "服务器名-2" "IP" 55903 "show" --------3线

3 "服务器名-3" "IP" 55904 "show" --------4线

4 "服务器名-4" "IP" 55905 "show" --------5线

(2)在D盘新建文件夹为muserver1

把d:muserver里面的DataServer2,data,GameServer三个文件夹复制到d:muserver1

(3线就是在D盘新建文件夹为muserver2

把d:muserver里面的DataServer2,data,GameServer三个文件夹复制到d:muserver2,四线五线依次类推)

(3)现在把d:muserverdata中的写为:

[gameserverinfo]

servername =服务器名 →这里不变

servercode =0 →注意这里为0

connectmemberload =0

muserver1data中的写为:

[gameserverinfo]

servername =服务器名-1

servercode =1 →注意这里修改为1

connectmemberload =0

(muserver2data中的写为:

[gameserverinfo]

servername =服务器名-2

servercode =2 →注意这里修改为2

connectmemberload =0

muserver3 muserver4 依次类推......

剩下的是最主要的:

用UE软件 打开d: 查6866EA 修改成 68E1ED

(muserver2的GS改为68E2ED muserve3改为68E3ED muserve4

改为68E3ED )

打开d:查找Webzen Mu Game Server is already

Running 然后将他们全改0,

最后的启动里面是这样的:

1-D: 55960

2-D: 55962

3--D:

4-D: /p55970 /ca127.0.0.1 /cp55557

5----D:MuServerMU2003_EVENT_SERVERWZ_MU2003_EVENT_

6----D:MuServerRankingServerDevilSqure_

7----D:

8----D: 127.0.0.1 55970 127.0.0.1 55960 55901

9----D: 127.0.0.1 55970 127.0.0.1 55962

55902(这个也是多加的,仔仔细细注意路径)

10----D: 127.0.0.1 55970 127.0.0.1 55962

55903(这个也是多加的,仔仔细细注意路径)

11----D: 127.0.0.1 55970 127.0.0.1 55962

55904(这个也是多加的,仔仔细细注意路径)

12----D: 127.0.0.1 55970 127.0.0.1 55962

55905(这个也是多加的,仔仔细细注意路径)

注意的问题:

/Article/msmir200/msmir14/200704/

1.大家在改启动的快捷方式时 不要光改目标 也要改起始位置:D:MuServer1GameServer

等......

2.服务器的名字最好不要使用中文