网站地图
新开私服
57私服首页 网游私服外挂 今日传奇3私服 今日奇迹私服 新开传奇私服 最新私服IP

关于删除数据库中无用的帐号


奇迹私服,传奇私服首页 作者:mu 发表时间:2004-4-8 10:07:46

【更多今日新开奇迹私服点这里查看...】

关于删除数据库中无用的帐号
很多朋友私服都开了有一段时间了,里面有许多无用的帐号其实只要有一点sql语法基础很容易就可以把多余的帐号删除的,以下是删除没有100级人物的帐号的方法,用之前请记得备份:
在查询分析器里依次执行以下语句:
1、delete from memb_info
where memb___id not in (select DISTINCT accountid from character where clevel>=100) ;这句是删除帐号
2、delete from warehouse
where accountid not in (select DISTINCT accountid from character where clevel>=100) ;这句是删除仓库
3、delete from character where accountid not in (select memb___id from memb_info) ;这句是删除人物

以上语句执行顺序不能错,如果出现以下错误
服务器: 消息 446,级别 16,状态 9,行 1
无法解决 equal to 操作的排序规则冲突。
请点设计warehouse,character,memb_info表中accountid,accountid,memb___id字段将排序规则改成数据库默认。
关于删除数据库中无用的帐号(增加未上线检测)
很多朋友私服都开了有一段时间了,里面有许多无用的帐号其实只要有一点sql语法基础很容易就可以把多余的帐号删除的,以下是删除没有100级人物的帐号的方法,用之前请记得备份:
在查询分析器里依次执行以下语句:
1、delete from memb_info
where memb___id not in (select DISTINCT accountid from character where clevel>=100) ;这句是删除帐号
2、delete from warehouse
where accountid not in (select DISTINCT accountid from character where clevel>=100) ;这句是删除仓库
3、delete from character where accountid not in (select memb___id from memb_info) ;这句是删除人物

以上语句执行顺序不能错,如果出现以下错误
服务器: 消息 446,级别 16,状态 9,行 1
无法解决 equal to 操作的排序规则冲突。
请点设计warehouse,character,memb_info表中accountid,accountid,memb___id字段将排序规则改成数据库默认。

以下是删除30天未上线的语句
1、delete from memb_info
where memb___id in (select memb___id from memb_stat where getdate()-isnull(connecttm,1900/01/01)>30 and getdate()-isnull(disconnecttm,1900/01/01)>30)
;这是删除帐号
2、delete from warehouse
where accountid in (select memb___id from memb_stat where getdate()-isnull(connecttm,1900/01/01)>30 and getdate()-isnull(disconnecttm,1900/01/01)>30
) ;这句是删除仓库
3、delete from character where accountid in (select memb___id from memb_stat where getdate()-isnull(connecttm,1900/01/01)>30 and getdate()-isnull(disconnecttm,1900/01/01)>30 ) ;这句是删除人物
4、delete from memb_info where memb___id in (select memb___id from memb_stat) ;这句是删除申请帐号后从未上过线的帐号
关于第4点,涉及到一个最近申请的帐号如果没上过线也会被删除的问题
解决方法:如果你的注册系统将注册日期写进了memb_info表中你可以在第4句后面加上以下语句: and getdate()-记录注册日期的字段>30

如果怕出问题可以把delete先用select * 替换查询后看看记录是不是你想要的


1.删除无角色帐号:
delete from accountcharacter
where (gameidc is null)

2.删除等级为1,从未登陆过的角色:
delete from character
where (clevel = 1) and (money = 0)

3.删除空仓库(500000是注册送的钱,我送了50万):
delete from warehouse
where (items is null) and (money = 500000)

以上测试通过!


关于删除数据库中无用的帐号(更新为存储过程)
很多朋友私服都开了有一段时间了,里面有许多无用的帐号其实只要有一点sql语法基础很容易就可以把多余的帐号删除的,以下是删除没有100级人物的帐号的方法,用之前请记得备份:
CREATE PROCEDURE del_acc
@level smallint
AS
begin
select memb___id into #tmptable from memb_info
where memb___id not in (select DISTINCT accountid from character where clevel>=@level)
delete from memb_info
where memb___id in (select memb___id from #tmptable)
delete from accountcharacter
where id in (select memb___id from #tmptable)
delete from guild where g_name in (select name from character where accountid in (select * from

#tmptable))
delete from guildmember where g_name in (select name from character where accountid in (select * from

#tmptable))
delete from vi_curr_info where memb___id in (select * from #tmptable)
delete from warehouse
where accountid in (select memb___id from #tmptable)
delete from character where accountid in (select memb___id from #tmptable)
drop table #tmptable
end
GO
CREATE PROCEDURE del_date_acc
@level smallint
AS
begin
select memb___id into #tmptable from memb_stat where getdate()-isnull(connecttm,1900/01/01)>@level and getdate()-isnull(disconnecttm,1900/01/01)>@level
delete from memb_info
where memb___id in (select memb___id from #tmptable)
delete from accountcharacter
where id in (select memb___id from #tmptable)
delete from guild where g_name in (select name from character where accountid in (select * from

#tmptable))
delete from guildmember where g_name in (select name from character where accountid in (select * from

#tmptable))
delete from vi_curr_info where memb___id in (select * from #tmptable)
delete from warehouse
where accountid in (select memb___id from #tmptable)
delete from character where accountid in (select memb___id from #tmptable)
drop table #tmptable
end
GO
执行
exec del_acc 100 // 100是等级
exec del_date_acc 10 //10是10天未上线,
参数可以自己改
如果怕有错,可以将里面的delete全改成select * 自己看结果再决定删不删
如出现排序规则冲突
将AccountCharacter,Character,Guild,GuildMember,MEMB_INFO,VI_CURR_INFO,warehouse中Id,AccountID,G_Name,name,memb___id,memb___id,AccountID字段的排序规则都改成数据库默认

相关新闻
[4-8] 注册成功无法创立人物
[4-8] 自动删除共享、日志
[4-8] 快速封号的方法 推荐
[4-8] 奇迹的端口及使用,希望对你们有所帮助
[4-8] 关于奇迹MU私服对PC级机器的要求 站长建议篇
[4-8] 7亿5千万刷钱的原因和解决方法,附经验计算公式
[4-8] 建立我们自己的Non-pk服务器

免责声明:57sf.com登载此文出于传递更多信息之目的,并不意味着57sf.com赞同其观点或证实其描述
 
 Copyright 2004 57sf.com Corporation. All Rights. 奇迹私服版权所有传奇私服 热血江湖私服