Seite 1 von 1
Reindizieren
Verfasst: Mi, 18. Dez 2013 16:31
von Jan
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
Re: Reindizieren
Verfasst: Do, 19. Dez 2013 22:41
von UliTs
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
Re: Reindizieren
Verfasst: Fr, 20. Dez 2013 10:54
von nightcrawler
SQL Fenster aufmachen, dann folgendes Script:
Geht allerdings nur mit ADS, nichtmit dem Local Server.
Re: Reindizieren
Verfasst: Fr, 20. Dez 2013 11:03
von nightcrawler
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;