Da langsam viele Chars in meinen DB befinden, würde ich gerne alle Löschen, die schon auf "d" sind sowie die Perm Banned sind! Gibt es von offi so ne Funktion ?
Wenn du die Lösung von raventh nimmst kannst du für die restlichen Tabellen die Query nehmen
DELETE FROM [Tabelle_XY]
WHERE NOT EXISTS (SELECT [hier den key hin, kenn den nich auswendig]
FROM CHARACTER_TBL
WHERE [Tabelle_XY].[key] = CHARACTER_TBL.[key])
Alternativ kannst du auch zuerst auf die anderen Tabellen diese Query ausführen
DELETE FROM [Tabelle_XY]
WHERE EXISTS (SELECT
FROM CHARACTER_TBL
WHERE [Tabelle_XY].[key] = CHARACTER_TBL.[key] AND CHARACTER_TBL.isblock = 'D'
Und dann die Query von raventh
Musst alles was in [] steht durch die tatsächlichen Namen ersetzen vom Prinzip sollte es aber das liefern was du willst.
$connect = mssql_connect(MSSQL_HOST, MSSQL_USER, MSSQL_PASS); if(!$connect) { sqlError('There went something wrong with the connection to the database!<br />We send an automatic email to the owner!'); notify('Probleem met de query:'.mssql_get_last_message().' in db_connect.php op lijn 34 op datum '.date("Y-m-d").''); }
function database($data) { $select_db = mssql_select_db($data); if(!$select_db) { sqlError('There went something wrong with the connection to the database!<br />We send an automatic email to the owner!'); notify('Probleem met de query:'.mssql_get_last_message().' in config.inc.php op lijn 13 op datum '.date("Y-m-d").''); } return $data; }
function delete($table,$value) { $delete = "DELETE FROM ".$table." WHERE m_idPlayer = '".$value."'"; if(!$result = mssql_query($delete)) { echo 'Something Whent Wrong'; } else { echo $table.' Has been cleared of characters that where blocked!<br />'; } }
//Selecting Character_dbf database("CHARACTER_01_DBF"); //Selecting chars that have isblock at D $sql = "SELECT m_idPlayer,m_szName,isblock FROM CHARACTER_TBL WHERE isblock = 'D'"; if(!$res = mssql_query($sql)) { echo 'Something whent wrong'; } else { while($result = mssql_fetch_assoc($res)) { //Deleting Stuff From the Tables// delete("BANK_EXT_TBL",$result['m_idPlayer']); delete("BANK_TBL",$result['m_idPlayer']); } } ?>
The only downside is you must add all the tables to it.
Da langsam viele Chars in meinen DB befinden, würde ich gerne alle Löschen, die schon auf "d" sind sowie die Perm Banned sind! Gibt es von offi so ne Funktion ?
An deiner Stelle würde ich lieber alle gebannten/gelöschten Charaktere mit 'D' einfach in der Tabelle umbenennen (bsp. "Gelöscht am 19.08.) So machst du
keinen Mist mit der Datenbank und die Spieler können die Namen wieder verwenden (was sicherlich der Sinn dieser Frage hier ist)
Da langsam viele Chars in meinen DB befinden, würde ich gerne alle Löschen, die schon auf "d" sind sowie die Perm Banned sind! Gibt es von offi so ne Funktion ?
Auf Offi wird eine Prozedure dafür verwendet die glaube ich jeden Tag um 04:00 ausgeführt wird.
Die löscht chars die 30 Tage oder länger gelöscht sind.
Das ganze läuft da über den SQL Server Agent so weit ich weiß.
Auf Offi wird eine Prozedure dafür verwendet die glaube ich jeden Tag um 04:00 ausgeführt wird.
Die löscht chars die 30 Tage oder länger gelöscht sind.
Das ganze läuft da über den SQL Server Agent so weit ich weiß.
Nur Funktioneirt der überhaupt nicht bzw davon habe ich nichts gesehen, da ich noch Chars von 2012 finde und nein Marvin. Ich würde gerne Komplett löschen von DB. Ich finde es effektiver und die DB gewinnt an Leistung. Wobei es kaum bemerkbar ist.
Seit wann macht es für eine DB etwas aus, ob da viel steht oder wenig ? Höchstens das anzeigen im SQL Studio dauert etwas länger, die DB hat seine indexe, an geschwindigkeit wirst du wohl kaum etwas gewinnen, höchstens an größe.
Seit wann macht es für eine DB etwas aus, ob da viel steht oder wenig ? Höchstens das anzeigen im SQL Studio dauert etwas länger, die DB hat seine indexe, an geschwindigkeit wirst du wohl kaum etwas gewinnen, höchstens an größe.
fehlen nicht teilweise die indexes? hab das ma was mit bekommen das die damals nicht mit genommen wurden.
DELETE CHARACTER_TBL WHERE isblock='D'
DECLARE @name varchar(256)
DECLARE Delete_Cursor CURSOR FOR
SELECT B.name
FROM syscolumns A,sysobjects B
WHERE A.id = B.id
AND B.name NOT IN('CHARACTER_TBL','MESSENGER_TBL')
AND A.name = 'm_idPlayer'
AND B.type='U'
ORDER BY B.name
OPEN Delete_Cursor
FETCH NEXT FROM Delete_Cursor
INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @name + '??'
EXEC('DELETE ' + @name + ' WHERE m_idPlayer NOT IN (SELECT m_idPlayer FROM CHARACTER_TBL)')
FETCH NEXT FROM Delete_Cursor
INTO @name
END
DELETE TAG_TBL WHERE f_idPlayer NOT IN (SELECT m_idPlayer FROM CHARACTER_TBL)
PRINT '??? ?? ??'
-- ?? 2009-09-16 ??? ?? ?? ?? (EXEC MESSENGER_STR 'D2','',@serverindex ?? ?? ??)
delete tblMessenger
where idPlayer not in (select m_idPlayer from CHARACTER_TBL)
delete tblMessenger
where idFriend not in (select m_idPlayer from CHARACTER_TBL)
-- EXEC MESSENGER_STR 'D2','',@serverindex
PRINT 'Delete Skill'
DELETE tblSkillPoint
WHERE PlayerID NOT IN (SELECT m_idPlayer FROM CHARACTER_TBL)
CLOSE Delete_Cursor
DEALLOCATE Delete_Cursor
CREATE proc [dbo].[CHARACTER_DELETE_STR]
@serverindex char(2)
AS
set nocount on
set lock_timeout 600000
set transaction isolation level read uncommitted
set xact_abort on
declare @ddate char(8)
set @ddate = convert(char(8),DATEADD(d, -7, getdate()),112)
CREATE TABLE #TEMP_DELETE_CHR ( m_idPlayer char(7) )
-- 삭제 캐릭터에 대한 캐릭터 ID 입력
insert into #TEMP_DELETE_CHR
select m_idPlayer from CHARACTER_TBL (nolock)
where isblock='D' AND End_Time <= @ddate and serverindex = @serverindex
-- 삭제 캐릭터에 대한 삭제 정보 입력
insert into CHARACTER_TBL_DEL (serverindex, m_idPlayer, m_szName, account, m_nLevel, m_nJob, CreateTime)
select serverindex, m_idPlayer, m_szName, account, m_nLevel, m_nJob, CreateTime
from CHARACTER_TBL (nolock)
where m_idPlayer in ( select m_idPlayer from #TEMP_DELETE_CHR)
DECLARE @name varchar(256)
DECLARE Delete_Cursor CURSOR FOR
SELECT B.name
FROM syscolumns A,sysobjects B
WHERE A.id = B.id
AND B.name NOT IN('MESSENGER_TBL', 'BILING_ITEM_TBL'
, 'CHARACTER_TBL_DEL', 'tblFunnyCoin',' tblLogout_Penya', 'tblLogout_Penya_Diff_Log'
, 'GUILD_COMBAT_1TO1_BATTLE_PERSON_TBL'
, 'BANK_EXT_TBL','BANK_TBL','INVENTORY_EXT_TBL','INVENTORY_TBL')
and B.name not like '%item2row%'
and upper(B.name) not like '%TMP_%'
AND (A.name = 'm_idPlayer' or A.name = 'serverindex')
AND B.type='U'
group by B.name
having count(*) > 1
ORDER BY B.name
OPEN Delete_Cursor
FETCH NEXT FROM Delete_Cursor
INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @name + ' TABLE DELETE'
exec ('DELETE ' + @name + ' WHERE m_idPlayer IN (
select m_idPlayer from #TEMP_DELETE_CHR )
and serverindex = ''' + @serverindex + '''')
FETCH NEXT FROM Delete_Cursor
INTO @name
END
PRINT 'NOTE DELETE'
DELETE TAG_TBL
WHERE f_idPlayer in (select m_idPlayer from #TEMP_DELETE_CHR) and serverindex = @serverindex
PRINT 'FRIEND LIST DELETE(OTHER USER)'
delete tblMessenger
where idPlayer in (select m_idPlayer from #TEMP_DELETE_CHR) and serverindex = @serverindex
delete tblMessenger
where idFriend in (select m_idPlayer from #TEMP_DELETE_CHR) and serverindex = @serverindex
PRINT 'Delete Skill'
DELETE tblSkillPoint
WHERE PlayerID in (select m_idPlayer from #TEMP_DELETE_CHR) AND serverindex = @serverindex
CLOSE Delete_Cursor
DEALLOCATE Delete_Cursor
drop table #TEMP_DELETE_CHR
RETURN
Code:
exec CHARACTER_DELETE_STR 'xx'
GO
(xx = bei den meisten hier 01)
???
Schaut mal in eure Datenbanken und lest die Namen der Prozeduren, ihr "Experten".
EDIT:
Quote:
set @ddate = convert(char(8),DATEADD(d, -7, getdate()),112)
Das rot markierte gibt an, wie alt die Chars sein müssen, damit sie gelöscht werden. Das hier ist älter als 7 Tage (00:00 Uhr).
Crossfire komplett löschen? 07/15/2012 - CrossFire - 8 Replies Hallo liebe Epvp Gemeinde ,
ich möchte Crossfire komplett löschen und auf einen neuen Pfad (mir fehlt das Wort) erstellen.
Kann mich dabei jemand unterstützen per Team vie wer ?
Wäre überaus dankbar ,so dankbar das ich einen Thanks geben würde *.* .
Warum Weshalb Wieso will ich Crossfire komplett löschen?!
Tja liebe Leute die Sache ist halt die ,wenn ich Crossfire Patche kommt
die Fehler Meldung: File is changed : W L
Battlefield play4free komplett löschen 09/25/2011 - Battlefield - 1 Replies Hi alle zusammen :) Wie kann man Battlefield play4free komplett löschen? Thx schon im vorraus....natürlich nua für die die antworten ;P^^
Profilnachrichten komplett löschen?? 10/03/2010 - Main - 3 Replies Hey ho..
Mal ne frage, wie kann ich Profilnachrichten so löschen, dass sie komplett weg sind?
weil jetzt steht bei mir überall:
#
White_Edition
Dieser Beitrag wurde von lMartinl gelöscht.
* Melden