[RELEASE] Remove Deleted Characters + Associated Assets

07/06/2015 15:24 SilentWisdom#1
Nulled
07/06/2015 16:09 thund22222#2
thanks, good job ;) ismoky
07/06/2015 18:46 gr4ph0s#3
WB ismoke :)
07/06/2015 20:08 nimoht#4
Nice to meet you here :-)
Thanks for the job !
07/09/2015 17:07 gavsta#5
Quote:
Originally Posted by SilentWisdom View Post
Sometimes your server begins to run slow after weeks of up-time and hundreds of users. A good deal of the cause can be directly related to garbage filled Telecaster tables, when a user deletes a character not only is that character NOT deleted, but neither is any of the assets (items, skills, quests, party, pets, summons) deleted either.

Today I bring to you a simple script that you point at your Telecaster and press 'GO' and it easily loops through all deleted characters and deletes them and their associated assets!

Code:
USE Telecaster -- Change my name to your Telecaster name

DECLARE @CUR INT,
		@MAX INT,
		@SID INT,
		@NAME NVARCHAR(50),
		@PETCUR INT,
		@PETMAX INT,
		@PETSID INT

SET @CUR = 0
SET @PETCUR = 0
SET @MAX = (SELECT COUNT(*) FROM dbo.Character WHERE name LIKE '%@%')

PRINT CONCAT(N'There are a total of ', @MAX, N' deleted characters')

WHILE @CUR < @MAX 
BEGIN
	SET @SID = (SELECT TOP(1) sid FROM dbo.Character WHERE name LIKE '%@%')
	SET @NAME = (SELECT TOP(1) name FROM dbo.Character WHERE sid = @SID)

	PRINT CONCAT(N'Processing entry ', @CUR, N' of ', @MAX,  N' with SID: ', @SID, N' and NAME: ', @NAME)
	
	DELETE FROM dbo.Character WHERE sid = @SID
	DELETE FROM dbo.Auction WHERE seller_id = @SID
	DELETE FROM dbo.Denials WHERE owner_id = @NAME OR denial_id = @NAME
	DELETE FROM dbo.EventAreaEnterCount WHERE player_id = @SID
	DELETE FROM dbo.Farm WHERE owner_id = @SID
	DELETE FROM dbo.Favor WHERE owner_id = @SID
	DELETE FROM dbo.Friends WHERE owner_id = @NAME or friend_id = @NAME
	DELETE FROM dbo.GuildMember WHERE player_id = @SID
	DELETE FROM dbo.Item WHERE owner_id = @SID
	DELETE FROM dbo.ItemCoolTime WHERE owner_id = @SID
	DELETE FROM dbo.ItemKeeping WHERE owner_id = @SID
	DELETE FROM dbo.Party WHERE leader_id = @SID
	DELETE FROM dbo.Quest WHERE owner_id = @SID
	DELETE FROM dbo.QuestCoolTime WHERE owner_id = @SID
	DELETE FROM dbo.RankingScore WHERE owner_id = @SID
	DELETE FROM dbo.Skill WHERE owner_id = @SID
	DELETE FROM dbo.State WHERE owner_id = @SID
	DELETE FROM dbo.Title WHERE owner_id = @SID
	DELETE FROM dbo.TitleCondition WHERE owner_id = @SID

	SET @PETMAX = (SELECT COUNT(*) FROM dbo.Summon WHERE owner_id = @SID)

	PRINT CONCAT(@PETMAX, N' Pets detected for this character.')
	
	WHILE @PETCUR < @PETMAX 
	BEGIN
		SET @PETSID = (SELECT TOP(1) sid FROM dbo.Summon WHERE owner_id = @SID)
		DELETE FROM dbo.Summon WHERE sid = @PETSID
		DELETE FROM dbo.Item WHERE summon_id = @PETSID
		DELETE FROM dbo.Skill WHERE summon_id = @PETSID
		DELETE FROM dbo.State WHERE summon_id = @PETSID

		SET @PETCUR = @PETCUR + 1

		PRINT CONCAT(N' Pet bearing sid ', @PETSID, N' and all related information deleted.')
	END

	PRINT N'Delete Successful'

	SET @CUR = @CUR + 1
END

you was gone for long, wasn't you?
07/10/2015 01:18 MrStubborn#6
this will make your Telecaster fully cleaned .
i like this .
07/15/2015 23:33 Ghost Informatics#7
welcome back :) ,I like this query the official use it .