قسم الشروحات و البرامج المستخدمة في عمل السيرفرات الخاصة[ قسم متخصص فى شروحات و البرامج في عمل السيرفرات الخاصة ] [ يرجى عدم وضع الأسئلة والاستفسارات في هذا القسم ]
موضوع انهارده : للشغال باي داتابيز غير اللي انا نزلتها
وطبعا كلها بتعمل 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
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
ارجو ان الموضوع افادكم وحل معظم مشاكل ملفات السيرفير