Czy można wykonać kopię zapasową i przywrócić część bazy danych na serwerze SQL?

19

Posiadamy bazę danych SQL Server 2005, którą regularnie przesyłamy z naszej strony klienta do naszej. Zajmuje to dużo czasu, ponieważ nie mamy bezpośredniego połączenia i musimy przesłać plik za pośrednictwem internetowej aplikacji do przesyłania plików. Baza danych ma obecnie około 10 GB, jednak nie potrzebujemy wszystkich danych - większość z nich znajduje się w tabelach kontroli i tabelach zawierających obliczone wartości, które można ponownie wygenerować.

Patrzyłem na utworzenie grupy plików do przechowywania tabel inspekcji i miałem nadzieję, że mogę po prostu wykonać kopię zapasową i przywrócić podstawową grupę plików. Mogę wykonać kopię zapasową w porządku, ale podczas przywracania pojawia się błąd informujący, że nie przywracam jej do tej samej bazy danych. Czy można przywrócić część bazy danych na inny serwer przy użyciu aplikacjami? Czy jest na to lepszy sposób?

Adam Butler
źródło
1
Możesz przeczytać to pytanie: najmniejsza możliwa kopia zapasowa… z SQL Server , a zwłaszcza odpowiedź Brenta.
Marian
Ponieważ to nie wygląda to możliwe bez większego hackery wierzę, możemy spojrzeć na przeniesienie wszystkich tabel dziennika inspekcji do osobnej bazy danych
Adam Butler
Czy nie wymagałoby to zmiany kodu w aplikacji? To trochę za dużo, aby poprosić klienta o przejście.
Shawn Melton

Odpowiedzi:

15

Szczerze mówiąc, jest to najłatwiejsze:

  • utwórz kopię zapasową / przywróć lokalnie
  • usuń niechciane dane z kopii (używając DELETE lub TRUNCATE TABLE, a nie DROP ...)
  • wyślij kopię

Nie zawracałbym sobie głowy aplikacjami z powodu dodatkowej złożoności, którą zauważyłeś ...

gbn
źródło
1
Sugeruję zmianę tej nowo przywróconej bazy danych na prosty model odzyskiwania. msdn.microsoft.com/en-CA/library/ms189272.aspx
data
7

Sposób, w jaki mówisz, że potrzebujesz tylko podstawowej grupy plików, wydaje mi się, że potrzebujesz tylko struktury bazy danych i bardzo małej ilości danych. Sugerowałbym, aby po prostu zaktualizować strukturę bazy danych (obiekty, tabele itp.), Aby po prostu wykonać skrypt dla bazy danych ze wszystkimi obiektami. Można to zrobić szybko i łatwo za pomocą PowerShell.

Następnie dane, których faktycznie potrzebujesz, których nie można zregenerować, po prostu wyeksportuj je (skrypt PowerShell również mógłby to zrobić). Jestem pewien, że plik eksportu można następnie skompresować do małego rozmiaru, a następnie przenieść przez połączenie z witryną.

Oczywiście tak jak ta, sugestia @gbn może zostać napisana w skrypcie, więc od Ciebie zależy, która opcja zajmie najmniej czasu.

Shawn Melton
źródło
2

Jest to możliwe przy użyciu częściowego przywracania . Obiekty źródłowej bazy danych i aplikacjami muszą być zorganizowane w sposób, który to obsługuje. PRZYWRACANIE wymaga dodatkowych określonych słów kluczowych.

Choć koncepcja może trochę przyzwyczaić się, ilość skryptów do zaimplementowania jest nie większa niż w przypadku innych sugerowanych rozwiązań.

Michael Green
źródło
-1

Kliknij prawym przyciskiem myszy i wygeneruj skrypty, a następnie zmień nazwę bazy danych na docelową (USE db).

Wyjaśniono tutaj

Juda
źródło
Co jest z tym nie tak?
Juda