05-03-2013, 02:41 PM
|
#1
|
مـشـرف عـام TR-SRO , RU-SRO
|
• الانـتـسـاب » Jul 2008
|
• رقـم العـضـويـة » 26773
|
• المشـــاركـات » 1,620
|
• الـدولـة » Alex
|
• الـهـوايـة »
|
• اسـم الـسـيـرفـر » No Server
|
• الـجـنـس » Male
|
• نقـاط التقييم » 23
|
|
|
معالجه جميع اخطاء ملفات السيرفير
موضوع انهارده : للشغال باي داتابيز غير اللي انا نزلتها
وطبعا كلها بتعمل Dump Files
وانت بتستسهل الموضوع وبتجيب برنامج يلغى ال dump files
طيب ليه منحلش الموضوع من غير اي برنامج
بمعني نخلي كفاءه الملفات 99% من غير اخطاء
طيب اي اللي بيخلي الاخطاء تيجي ؟؟
ان في حاجه في الداتا بيز مش مظبوطه
دلوقتي انا هقول على كام خطاء بيطلع في ملفات السيرفير واهمهم ال Global Manager
واللي يشوف اي خطاء من دول يصلحه بالكويري اللي هيبقى تحت الخطأ
نبتدى على البركه
(1)
الرساله :
كود:
failed to permanent removing of character ! [JID: 45234, CharID: 75375, ErrorCode: -10000]
الحل :
كود:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_DeleteCharPermanently] Script Date: 02/14/2012 12:54:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
--!!!CHECK!!!
ALTER PROCEDURE [dbo].[_DeleteCharPermanently]
@CharID as int
as
------------------------------------
-- 일단 삭제된 캐릭인지 부터 검사!
------------------------------------
if (not exists(select charid from _deletedchar where charid = @CharID))
begin
return -1
end
------------------------------------
-- 삭제후 경과된 시간이 대략 7일이 맞는가 확인 (샤드에 혹시 버그가 있을지 모르니깐...)
------------------------------------
declare @deleted_date datetime
declare @cur_date datetime
declare @elapsed_min int
declare @UserJID int
-- declare @deleted_slot int
set @cur_date = getdate()
select @UserJID = UserJID, /*@deleted_slot = CharSlot,*/ @deleted_date = deleteddate from _deletedchar with (nolock) where charid = @CharID
-- 삭제시킨지 6일 + 23시간 이상이 지난 캐릭인가? (1시간 정도의 오차라면 인정해 준다 냐하~)
set @elapsed_min = datediff(minute, @deleted_date, @cur_date)
if (@elapsed_min < ((60 * 24 * 6) + (60 * 23)))
begin
return -2
end
------------------------------------
-- 삭제된 캐릭이 맞는지 다시한번 확인
------------------------------------
declare @is_deleted tinyint
select @is_deleted = deleted from _Char where CharID = @CharID
if (@is_deleted <> 1)
begin
return -3
end
------------------------------------
-- 지울 캐릭이 _User 에 있는 CharID와 일치하는가 검사
------------------------------------
declare @char_id_to_check int
set @char_id_to_check = 0
/* -- commented by novice. for server integration.
if (@deleted_slot = 0)
begin select @char_id_to_check = CharID1 from _User where UserJID = @UserJID end
else if (@deleted_slot = 1)
begin select @char_id_to_check = CharID2 from _User where UserJID = @UserJID end
else if (@deleted_slot = 2)
begin select @char_id_to_check = CharID3 from _User where UserJID = @UserJID end
else
begin
return -4
end
-- 켁! 어떻게 된거야? 이상한 넘이 자리를 차지하고 있다!
if (@char_id_to_check <> @CharID)
begin
return -5
end
*/
-- start by novice.
select @char_id_to_check = CharID from _User where UserJID = @UserJID and CharID = @CharID
if (@char_id_to_check = 0)
begin
-- 지울 캐릭터가 _User 에 없어?
return -5
end
-- finish by novice.
begin transaction
declare @GuildID int
exec @GuildID = _DeleteCharPermanently_NoTX @UserJID, @CharID --, @deleted_slot
if (@GuildID is null)
set @GuildID = -10000
if (@GuildID < 0)
begin
rollback transaction
return @GuildID
end
commit transaction
return @GuildID
(2)
الرساله :
الحل :
كود:
USE [SRO_VT_ACCOUNT]
GO
/****** Object: StoredProcedure [dbo].[_RegisterAutomatedPunishment] Script Date: 10/24/2011 05:46:38 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[_RegisterAutomatedPunishment]
@Account VARCHAR(128),
@Type TINYINT,
@Executor VARCHAR(128),
@Guide VARCHAR(512),
@Description VARCHAR(1024),
@BlockTimeElapse INT
-- @BlockStartTime DATETIME,
-- @BlockEndTime DATETIME
AS
DECLARE @BlockStartTime VARCHAR(128)
DECLARE @BlockEndTime VARCHAR(128)
SET @BlockStartTime = getdate()
SET @BlockEndTime = dateadd(minute, 10, getdate())
------------------------------------------------------------------------------------
DECLARE @UserJID INT
SET @UserJID = 0
DECLARE @NewSerialNo int
SET @NewSerialNo = 0
-- Á¸ÀçÇϴ ij¸¯ÅÍ À̸§ÀÎÁö? JID ¾÷¾î¿ÀÀÚ.
SELECT @UserJID = JID FROM TB_User WITH (NOLOCK) WHERE strUserID = @Account
IF @@ERROR <> 0 OR @UserJID = 0
BEGIN
SELECT -1
RETURN
END
-- ÀÌ¹Ì ºí·° °É¸° À¯ÀúÀ̳Ä?
IF( EXISTS ( SELECT UserJID FROM _BlockedUser WITH (NOLOCK) WHERE UserJID = @UserJID AND Type = @Type))
BEGIN
select -2
RETURN
END
INSERT _Punishment values( @UserJID, @Type, @Executor, 0, '', '', '', @Guide, @Description, @BlockStartTime, @BlockStartTime, @BlockEndTime, @BlockStartTime, 0)
set @NewSerialNo = @@identity
if( @@rowcount = 0 or @@error <> 0 or @NewSerialNo = 0 or @NewSerialNo is null)
BEGIN
SELECT -3
RETURN
END
INSERT _BlockedUser values( @UserJID, @Account, @Type, @NewSerialNo, @BlockStartTime, @BlockEndTime)
if( @@rowcount = 0 or @@error <> 0 )
BEGIN
SELECT -4
RETURN
END
SELECT @UserJID
(3)
شويه كويري استخدمها هتظبطلك حاجات في الداتا
كود:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_DeleteCharPermanently_NoTX] Script Date: 02/14/2012 12:54:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[_DeleteCharPermanently_NoTX]
@UserJID INT
, @CharID INT
AS
------------------------------------
-- Inventory¶û ±×¾È¿¡ °¡Áö°í ÀÖ´ø ¾ÆÀÌÅÛµé ³¯·Á¹ö¸®ÀÚ...
------------------------------------
-------------- Æê ¼Òȯ ¾ÆÀÌÅÛºÎÅÍ ÀÏ´Ü »èÁ¦ ----------------
declare @result int
declare @Slot tinyint
declare @RefItemID int
declare pc_inv_cursor cursor fast_forward for
select inv.slot
from _Inventory as inv join _Items as it on inv.ItemID = it.ID64
where
(inv.CharID = @CharID and inv.Slot >= 13 and inv.ItemID > 0) and -- Àåºñâ Á¦¿ÜÇÏ°í ¾ÆÀÌÅÛ ÀÖ´Â ¼ø¼ö Àκ¥Å丮 ¾È¿¡ µé¾îÀÖÀ¸¸ç
(it.Data <> 0) and -- ¼Òȯ¼ö¸¦ °¡Áö°í ÀÖ´Â
(exists (select top 1 ID from _RefObjCommon where ID = it.RefItemID and TypeID1 = 3 and TypeID2 = 2)) -- Æê¼Òȯ ¾ÆÀÌÅÛµé ã¾ÆÁà~
open pc_inv_cursor
fetch next from pc_inv_cursor into @slot
while @@fetch_status = 0
begin
exec @result = _STRG_DEL_ITEM_NoTX 1, @CharID, @Slot
if (@result < 0)
begin
close pc_inv_cursor
deallocate pc_inv_cursor
return @result
end
fetch next from pc_inv_cursor into @Slot
end
close pc_inv_cursor
deallocate pc_inv_cursor
------------------- ³²Àº ¾ÆÀÌÅÛµé ¸ùâ »èÁ¦ -------------------
-- ¾ÆÀÌÅÛÀÌ Çϳª¶óµµ ÀÖ´Ù¸é...
if (exists (select top 1 itemID from _Inventory where CharID = @CharID AND ItemID <> 0))
begin
update _ItemPool Set InUse = 0
from _ItemPool as pool join _Inventory as inv on pool.ItemID = Inv.ItemID
where Inv.CharID = @CharID and Inv.ItemID <> 0
end
----------- ¾ÆÀÌÅÛµé ³¯·ÈÀ¸´Ï ÃÖÁ¾ÀûÀ¸·ç Àκ¥Å丮 »èÁ¦ ------------
delete from _Inventory where CharID = @CharID
if (@@error <> 0)
begin
return -10001
end
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- APPLY_AVATAR_SYSTEM (Çã½Â¿í)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
------------------- ³²Àº ¾Æ¹ÙŸ Àκ¥Å丮 ¾ÆÀÌÅÛµé ¸ùâ »èÁ¦ -------------------
-- ¾ÆÀÌÅÛÀÌ Çϳª¶óµµ ÀÖ´Ù¸é...
if (exists (select top 1 itemID from _InventoryForAvatar where CharID = @CharID AND ItemID <> 0))
begin
update _ItemPool Set InUse = 0
from _ItemPool as pool join _InventoryForAvatar as InvAva on pool.ItemID = InvAva.ItemID
where InvAva.CharID = @CharID and InvAva.ItemID <> 0
end
----------- ¾ÆÀÌÅÛµé ³¯·ÈÀ¸´Ï ÃÖÁ¾ÀûÀ¸·ç ¾Æ¹ÙŸ Àκ¥Å丮 »èÁ¦ ------------
delete from _InventoryForAvatar where CharID = @CharID
if (@@error <> 0)
begin
return -10008
end
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- APPLY_AVATAR_SYSTEM (Çã½Â¿í)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
------------------------------------
-- COS »èÁ¦
------------------------------------
/*
declare @engaged_cos int
set @engaged_cos = 0
select @engaged_cos = EngagedCOS from _char with (nolock) where CharID = @CharID
if (@engaged_cos = 0)
begin
-- ¿Ö ¹ß»ýÇÏ´Â Áö Àß ¸ð¸£°ÚÁö¸¸... ¾ÆÁÖ µå¹°°Ô COS ¸¸ ³²¾ÆÀÖ´Â °æ¿ì°¡ ÀÖ´õ¶ó°í... -_-;
select @engaged_cos = ID from _CharCOS with (nolock) where OwnerCharID = @CharID
if (@engaged_cos is null)
set @engaged_cos = 0
end
if (@engaged_cos is not null and @engaged_cos <> 0)
begin
declare @Return_Del_COS int
exec @Return_Del_COS = _DeleteCharCOS_NoTX @CharID, @engaged_cos
if (@Return_Del_COS < 0)
begin
return -10002
end
end
*/
------------------------------------
-- Trijob µ¥ÀÌÅÍ »èÁ¦
------------------------------------
delete from _CharTrijob where CharID = @CharID
------------------------------------
-- ½ºÅ³ »èÁ¦
------------------------------------
delete _CharSkill where CharId = @CharID
delete _CharSkillMastery where charId = @CharID
------------------------------------
-- Äù½ºÆ® »èÁ¦
------------------------------------
delete _CharQuest where CharID = @CharID
------------------------------------
-- ±æµå ¸â¹ö »èÁ¦
------------------------------------
-- !!! ¸¸¾à ¿©±â¼* Guild ¸â¹ö »èÁ¦°¡ ÀϾÁö ¾ÊÀ¸¸é ShardManager ¿¡¼*
-- _Guild_DelMember È£ÃâÇØ ÁÖµµ·Ï ¼öÁ¤ÇØ¾ß ÇÑ´Ù! Áö±ÝÀº ±× °úÁ¤Àº SkipÇϰí
-- ¸Þ¸ð¸®¿¡¼* »èÁ¦¸¸ ÀϾ°Ô µÇ¾î Àְŵ¢...
declare @GuildID int
set @GuildID = 0
select @GuildID = GuildID from _char where charid = @CharID
if (@GuildID is not null and @GuildID <> 0)
begin
if (not exists (select ID from _Guild where ID = @GuildID))
begin
update _Char set GuildID = 0 where CharID = @CharID
end
else
begin
declare @Return_Del_GuildMember int
exec @Return_Del_GuildMember = _Guild_DelMember_NoTX @GuildID, @CharID
if (@Return_Del_GuildMember < 0)
return -10003
end
end
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- APPLY_MENTOR_SYSTEM (ÃÖÀÎÈ£)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
DECLARE @CampID INT
SET @CampID = 0
SELECT @CampID = CampID FROM _TrainingCampMember WHERE CharID = @CharID
IF (@CampID IS NOT NULL AND @CampID <> 0)
BEGIN
DECLARE @Ret_DelCampMember INT
EXEC @Ret_DelCampMember = _TRAINING_CAMP_DELMEMBER @CampID, @CharID, 0
IF (@Ret_DelCampMember < 0)
RETURN -10007
END
-- ÀÖÀ¸¸é Áö¿ö¹ö¸®ÀÚ~ ¹¹.
DELETE FROM _TrainingCampSubMentorHonorPoint WHERE CharID = @CharID
-- °æÇèÄ¡ ¹öÇÁ ·¹Äڵ嵵~~ ¤»¤»
DELETE FROM _TrainingCampBuffStatus WHERE CampID = @CampID
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-- APPLY_MENTOR_SYSTEM (ÃÖÀÎÈ£)
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-----------------------------------
-- Ä£±¸ ¸®½ºÆ® »èÁ¦ ( ³ªÀÇ Ä£±¸ ¸®½ºÆ® + Ä£±¸ÀÇ Ä£±¸ ¸®½ºÆ®Áß ³ª )
-----------------------------------
-- ³» Ä£±¸µé..
declare @FriendCharID int
declare @cursor_var cursor
set @cursor_var = cursor fast_forward
for
select FriendCharID
from _Friend
where CharID = @CharID
open @cursor_var
fetch next from @cursor_var into @FriendCharID
while( @@FETCH_STATUS = 0 )
begin
delete _Friend where CharID = @FriendCharID and FriendCharID = @CharID
fetch next from @cursor_var into @FriendCharID
end
close @cursor_var
deallocate @cursor_var
-- ³ª..
delete _Friend where CharID = @CharID
-----------------------------------
-----------------------------------
-- ÂÊÁö »èÁ¦
-----------------------------------
delete _Memo where CharID = @CharID
------------------------------------
-- TimedJob »èÁ¦Çϱâ
------------------------------------
delete _TimedJob where CharID = @CharID
------------------------------------
-- Static Avatar Á¤º¸ »èÁ¦
------------------------------------
delete from _staticavatar where charid = @charid
------------------------------------
-- ±Ó¸» ºí·° Á¤º¸ »èÁ¦
------------------------------------
delete from _BlockedWhisperers where OwnerID = @charid
------------------------------------
-- ÆÄƼÃÊ´ë ºí·° Á¤º¸ »èÁ¦ 10.06.07
------------------------------------
DELETE FROM _BlockedPartyInviter WHERE CharID = @charid
------------------------------------
-- _DeletedChar Entry »èÁ¦
------------------------------------
delete from _DeletedChar where CharID = @CharID
if (@@error <> 0)
begin
return -10004
end
-- start by novice.
DELETE FROM _User WHERE UserJID = @UserJID and CharID = @CharID
-- finish by novice.
------------------------------------
-- commit !!!
------------------------------------
-- Ŭ¶óÀÌ¾ðÆ®¿ë Äü½½·Ô Á¤º¸ ÀúÀå Å×ÀÌºí ³¯¸®±â!!!
exec _RemoveClientConfig @CharID -- by novice...... for saving client configurations...
return @GuildID
كود:
USE [SRO_VT_ACCOUNT]
GO
/****** Object: StoredProcedure [dbo].[_ManageShardCharName] Script Date: 02/14/2012 12:56:27 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER procedure [dbo].[_ManageShardCharName]
@job tinyint,
@UserJID int,
@ShardID smallint,
@CharName varchar(64),
@OldName varchar(64)
as
-- add new char name
if (@job = 0)
begin
if (not exists(select * from SR_ShardCharNames where UserJID = @UserJID and ShardID = @ShardID and CharName = @CharName))
begin
insert SR_ShardCharNames values(@UserJID, @ShardID, @CharName)
end
end
-- remove char name
else if (@job = 1)
begin
delete SR_ShardCharNames where UserJID = @UserJID and ShardID = @ShardID and CharName = @CharName
-- delete SR_CharAppoint where UserJID = @UserJID and ShardID = @ShardID and CharID = @CharName
end
-- rename previous one
else if (@job = 2)
begin
update SR_ShardCharNames set CharName = @CharName where UserJID = @UserJID and ShardID = @ShardID and CharName = @OldName
-- update SR_CharAppoint set CharID = @CharName where UserJID = @UserJID and ShardID = @ShardID and CharID = @OldName
end
ارجو ان الموضوع افادكم وحل معظم مشاكل ملفات السيرفير
وفي اخر الموضوع اهداء صغير للي بيحصل الايام ديه
|
|
|