Mamy instancję programu SQL Server używaną do archiwizacji wiadomości e-mail (dzięki pakietowi do archiwizacji innej firmy). Co jakiś czas oprogramowanie jest przenoszone do nowej pustej bazy danych. W przeszłości robiliśmy to co kwartał, ale teraz chcemy to robić co miesiąc. Ilość archiwizowanych danych wynosi około 15–20 GB miesięcznie, a większość danych znajduje się tylko w kilku tabelach (zwykle 2–4).
Gdy przejdziemy do nowej bazy danych, stara zostanie użyta wyłącznie do odczytu. Chciałbym zoptymalizować go do ładnego, ciasnego pliku danych, ze wszystkimi tabelami / indeksami sąsiadującymi i mającymi bardzo wysoki współczynnik wypełnienia oraz niewiele pustej przestrzeni na końcu pliku danych. Ponadto używamy Wersji Standardowej na tym serwerze, ze wszystkimi wynikającymi z tego ograniczeniami (w przeciwnym razie użyłbym już kompresji danych).
Kilka możliwości, o których mogę myśleć:
- Indeksy REBUILD / REORGANIZE, DBCC SHRINKFILE (OK, nie jest to rozsądna opcja, ponieważ DBCC SHRINKFILE podzieli sikanie na wszystko, czego dotknie, ale włączam to dla kompletności.)
- Utwórz nową bazę danych z wyłączonymi automatycznymi statystykami. Skrypt i odtwórz wszystkie tabele ze źródłowej bazy danych. Użyj programu bcp, aby wyeksportować / zaimportować dane do nowej bazy danych w kolejności klucza klastra. Skrypt i odtwórz wszystkie indeksy. Przelicz wszystkie statystyki przy pełnym skanie.
- Utwórz nową bazę danych z wyłączonymi automatycznymi statystykami. Skrypt i odtwórz wszystkie tabele ze źródłowej bazy danych. Użyj SSIS lub T-SQL, aby przesłać dane do nowej bazy danych. Skrypt i odtwórz wszystkie indeksy. Przelicz wszystkie statystyki przy pełnym skanie.
Ostatnim krokiem w każdym przypadku byłoby ustawienie bazy danych w tryb tylko do odczytu.
Jakie są inne dobre / lepsze opcje, aby to zrobić? Moim problemem jest przeniesienie danych w taki sposób, aby zachować wysoki współczynnik wypełnienia i logicznie ciągły.
Edytować:
Powinienem wspomnieć, że około 75% danych wydaje się być przechowywanych w kolumnach obrazu (LOB).
PRIMARY
?