Witam wszystkich dawno się nie zwracałem o pomoc, ale przyszła pora :)
Mianowicie chodzi mi o to jak skasować wszystkie dane z tabeli? interesuje mnie szybkie i bezpieczne rozwiązanie.
Wiem, że można to zrobic deletem, ale to zbyt długo trwa bo kasowanie wszystkich tabel w DTSie trwa mi 15 minut, ale wiadomo jest bezpieczne, zostawia logi itp.
truncatem też można i to jest szybkie, lecz nie bardzo mogę tego użyć na serwerach produkcyjnych, "góra" się nie godzi za bardzo :/
jakieś pomysły?
Dlaczego "góra" nie zgodzi się na TRUNCATE TABLE
?
Chyba innej sensownej opcji po za DELETE
lub TRUNCATE TABLE
nie ma...
bo z tego co wiem to delete zostawia logi działania i w razie czego można wrócić działanie a truncate "nie zastanawia sie" i czyści :) jeśli nie ma innego rozwiazania to muszą przystać na truncata albo dts bedzie tyle chodzil ile chodzi :)
A może lepiej pomyśleć nad zabezpieczeniem nie potrzebnych wywołań czyszczenia bazy a nie z góry zakładać że przydadzą się logi ;) ?
no nie wiadomo kiedy logi sie przydadza, bede kombinował :)
ale dzieki za odzwe:)
Nie logi działania
tylko log transakcji
. W razie błędu podczas operacji na bazie transakcję można wtedy cofnąć i dane odzyskać. Ale nie widzę powodu dla którego miałoby się to przydać podczas czyszczenia całej tabeli. truncate
zrobi to na pewno szybciej, a zabezpieczyć się przed skasowaniem zbyt wielu danych można poprzez backup.
jeśli chcesz aby delete
poszło szybciej to na czas usuwania odłącz indeksy i wyzwalacze a po usuwaniu włącz i przeindeksuj tabelę. Oczywiście to takie rzeźbienie w gó*** ale jak mus to mus
I należy pamiętać, że domyślnie TRUNCATE zeruje IDENTITY.
Inne ograniczenia tu: https://msdn.microsoft.com/en-us/library/ms177570(v=sql.110).aspx
abrakadaber napisał(a):
jeśli chcesz aby
delete
poszło szybciej to na czas usuwania odłącz indeksy i wyzwalacze a po usuwaniu włącz i przeindeksuj tabelę. Oczywiście to takie rzeźbienie w gó*** ale jak mus to mus
To wygląda dość ciekawie :)
ale jeszcze nie mam wytycznych co wkoncu robic :)