Reindizieren

Advantage Database Architect

Moderator: Moderatoren

Reindizieren

Beitragvon Jan » Mi, 18. Dez 2013 16:31

Im ADA kann man ja auch reindizieren. Dummerweise nur auf eine geöffnete dbf. Das finde ich etwas umständlich, denn ich muß erst jede dbf manuell aufmachen, rechte Maustaste, Reindizieren wählen, Ja bestätigen, dbf wieder schließen. Kann man nicht irgendwo ganz global sagen: Reindiziere mir alles, was in diesem ADD drin ist?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11449
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: Reindizieren

Beitragvon UliTs » Do, 19. Dez 2013 22:41

Wenn Du z.B. den ARC einsetzt und die Tabellen in einem Data Dictionary zusammengefasst hast, kannst Du Dir eine Stored Procedure schreiben, die kurzerhand von allen Tabellen die Indizes neu aufbaut.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2345
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen

Re: Reindizieren

Beitragvon nightcrawler » Fr, 20. Dez 2013 10:54

SQL Fenster aufmachen, dann folgendes Script:
Code: Alles auswählen
EXECUTE PROCEDURE sp_PackAllTablesOnline()

Geht allerdings nur mit ADS, nichtmit dem Local Server.
--
Joachim
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 239
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach

Re: Reindizieren

Beitragvon nightcrawler » Fr, 20. Dez 2013 11:03

und hier der Quellcode zur Erzeugung einer PackAll Stored Procedure mit Rückmeldung, welche auch mit Local Server geht (allerdings braucht die dann den Exklusiv-Zugriff auf die Tabellen):
Code: Alles auswählen
CREATE PROCEDURE PackAllTables( tablename CICHAR(200) OUTPUT, success LOGICAL OUTPUT, msg MEMO OUTPUT)
BEGIN
  DECLARE @tables CURSOR AS SELECT Name FROM SYSTEM.TABLES;
  OPEN @tables;
  WHILE FETCH @tables DO
    TRY
     EXECUTE PROCEDURE sp_PackTable(@tables.Name);
     INSERT INTO __output VALUES (@tables.Name, true, NULL);
   CATCH ALL
     INSERT INTO __output VALUES (@tables.Name, false, __errtext);
   END TRY;
  END WHILE;
END;
--
Joachim
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
Benutzeravatar
nightcrawler
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 239
Registriert: Di, 24. Apr 2012 15:33
Wohnort: 72181 Starzach


Zurück zu ARC

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast