الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=289)
-   -   معالجه جميع اخطاء ملفات السيرفير (https://silkroad4arab.com/vb/showthread.php?t=486822)

Zenger 05-03-2013 02:41 PM

معالجه جميع اخطاء ملفات السيرفير
 


http://www.samysoft.net/fmm/fimnew/basmla/24235235.gif

http://www.samysoft.net/fmm/fimnew/f.../264905214.gif


موضوع انهارده : للشغال باي داتابيز غير اللي انا نزلتها

وطبعا كلها بتعمل Dump Files

وانت بتستسهل الموضوع وبتجيب برنامج يلغى ال dump files

طيب ليه منحلش الموضوع من غير اي برنامج

بمعني نخلي كفاءه الملفات 99% من غير اخطاء

طيب اي اللي بيخلي الاخطاء تيجي ؟؟

ان في حاجه في الداتا بيز مش مظبوطه


دلوقتي انا هقول على كام خطاء بيطلع في ملفات السيرفير واهمهم ال Global Manager

واللي يشوف اي خطاء من دول يصلحه بالكويري اللي هيبقى تحت الخطأ

نبتدى على البركه


http://www.samysoft.net/fmm/fimnew/f.../264905214.gif

(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

http://www.samysoft.net/fmm/fimnew/f.../264905214.gif

(2)

الرساله :

http://img27.imageshack.us/img27/4894/82857708.png

الحل :

كود:

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

http://www.samysoft.net/fmm/fimnew/f.../264905214.gif

(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

http://www.samysoft.net/fmm/fimnew/f.../264905214.gif

ارجو ان الموضوع افادكم وحل معظم مشاكل ملفات السيرفير


وفي اخر الموضوع اهداء صغير للي بيحصل الايام ديه

http://www.samysoft.net/fmm/fimnew/o.../big/24003.gif



iFox_Snip3r 05-03-2013 03:09 PM

تشكر

ĴũŠţ ŘũĻèŠ 05-03-2013 06:24 PM

تسلمـ

BoudyEG 05-03-2013 11:47 PM

Thank You

™_SaMeR_™ 05-03-2013 11:50 PM

تمام يا ساحبييي

| - CreSpO - | 05-03-2013 11:55 PM

شكرا ليك :)

MissDooM 06-03-2013 09:51 PM

شكراا ع المعلومه

CriZ 07-03-2013 01:58 AM

Noob
Nice
:angel1:

Last_Fiddler 08-03-2013 09:07 PM

تسلم ايدك

MR ! HЄRO 09-03-2013 05:49 AM

تسلم

sherifalbasha 24-03-2013 01:50 PM

السلام عليكم ورحمه الله وبركاته
 
مفيش رد يتقال غير ان انتا :thumb_yello:

Hamza FiGo 14-04-2013 03:00 AM

thnx

MyRȝturn 14-04-2013 03:26 PM

تسلمـ

sherifalbasha 17-04-2013 07:20 PM

السلام عليكم ورحمه الله وبركاته
 
موضوع جيد

Ch3tos 18-04-2013 05:08 PM

كويس بس ايهـ الحاجات اللي هتظبطها في الداتا بالظبط ؟


الساعة الآن 04:15 PM.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.