Jaki jest najskuteczniejszy sposób duplikowania instancji w SQL 2008?

14

Mamy prostą instancję bazy danych z wystarczającą ilością danych w bazach danych, aby była użyteczna, i możemy ją wykorzystać do celów demonstracyjnych, a ja chcę umieścić jej kopię na moim laptopie, aby móc użyć jej do pracy programistycznej, gdy Nie ma mnie w biurze. (Zwykłe instancje bazy danych deweloperów mają około 150 GB, ta jedna instancja to 3 GB)

Jaka jest najbardziej powtarzalna / skryptowalna metoda odtwarzania instancji na moim laptopie? Jestem pewien, że będę musiał ponownie uruchomić Instalatora dla SqlServer2008 i skonfigurować instancję, ale potem ... Myślę, że chcę móc usuwać moje stare bazy danych co miesiąc i tak dalej. skopiuj wszystkie nowe rzeczy na mój laptop, ponieważ moja instancja nie zmieni się ani w jednym systemie demonstracyjnym, ani na laptopie. Ale same bazy danych zostaną zaktualizowane, odświeżając sproki i tym podobne.

Rozważałem skrypty wszystkich „upuszczania plików bazy danych; dodaj pliki bazy danych {ścieżka}” i trzymania ich w jakimś możliwym do uruchomienia pliku wsadowym, a następnie mogę „upuścić, usunąć, skopiować, dodać”, ale zastanawiałem się, czy był lepszy sposób niż tylko xcopy i partia?

Staram się to robić tanio (nie zawsze staramy się robić tanie), więc nie jestem szczególnie zainteresowany produktami RedGate lub podobnymi. Chcę coś, co mogę łatwo utrzymać w edytorze tekstu dla siebie.

jcolebrand
źródło
czy jest to pojedyncza baza danych lub instancja serwera SQL z więcej niż jedną bazą danych? Zakładam, że masz zainstalowany serwer SQL w swoim laptopie i komputerze deweloperskim i masz jedną bazę danych, w takim przypadku możesz użyć kopii zapasowej i przywracania. Wykonaj kopię zapasową bazy danych maszyny deweloperskiej, skopiuj ją na laptopa i przywróć, odwrotnie ... czy to ma sens?
CoderHawk
czy to SQL Server Express Edition? czy Standard? SSIS jest dobrą opcją dla takich scenariuszy, niestety nie jest dostępny w wersjach Express i Web.
CoderHawk
Przepraszam @Sandy ~ To SQL Dev 2008. Mam dostęp do prawie wszystkiego, co można zgadnąć na koncie MSDN.
jcolebrand
Tytuł pytania jest trochę mylący „Jaki jest najbardziej skuteczny sposób na zduplikowanie | wystąpienia | w SQL 2008?” - instancja czy baza danych?
CoderHawk
@Sandy ~ „Instancja” ... rzeczywiście, chcę tego wszystkiego.
jcolebrand

Odpowiedzi:

4

Trafiłeś w sedno: skopiuj pliki. Użyłem tego z dobrym skutkiem.

Powiedziałbym, że musisz zdefiniować „tani”, obejmujący inwestycję czasu, aby przygotować rozwiązanie, które nie wymaga xcopy

gbn
źródło
3

Umm, nie jestem pewien, czy to pomaga, ale używamy zestawu skryptów do „czyszczenia” produkcyjnej bazy danych i przygotowania jej do nadużyć programistycznych. Bierzemy wszystkie duże tabele, które mają kolumnę z datą i przebudowujemy tabelę z danymi z ostatniego roku. Z pełnego db około 200 GB uzyskujemy około 40 GB db na rozwój. Głównie generujemy dynamiczne skrypty do tworzenia plików bcp dla każdej tabeli, odtwórz tabelę (w tym wszelkie powiązane ograniczenia), a następnie wstawiamy zbiorczo tylko dane z zeszłego roku.

Być może są na to narzędzia, ale nasz sklep jest tani :-).

Marian
źródło
Tak, idziemy drogą BCP dla wielu rzeczy, więc rozumiem, co mówisz, i obcinanie niektórych z nich byłoby dobre, ale mam już około 3 GB danych, których potrzebuję, więc nie jestem tak naprawdę chcę tam dodać więcej. Chcę tylko skopiować całą instancję i pomyśleć, że istnieje sposób, aby powtarzać to wielokrotnie. Ale poza tym myślę, że jestem na tym samym halsie, o czym mówisz, tylko mniejszy cud.
jcolebrand
Powtórz więc wszystkie kroki partiami :). SQL ma parametry wsadowe i możesz łączyć pliki wsadowe z plikami sql i uzyskać ładny pakiet. Utworzyłem niestandardowy pakiet Log Shipping (głupi), który działa w różnych domenach, a całe przygotowanie bazy danych odbywa się w plikach cmd / sql. Możesz utworzyć nazwaną instancję tylko do użytku i tam uruchomić / zatrzymać usługę, przywrócić bazę danych, wyczyścić, przygotować, wykonać kopię zapasową i wysłać do określonego folderu. Może trochę pracy można by wykonać szybciej w PowerShell ... ale nie jestem z tym zaznajomiony.
Marian
tak to jest pomysł;)
jcolebrand
@jcolebrand - Może pomoże takie narzędzie jak Norton Ghost lub Clonezilla? Będziesz potrzebował go, aby skopiować foldery kopii zapasowych prod gdzieś na boisku, a następnie zrób tam całą zabawę (przywróć .. przycinanie ... itd.). Nie musisz pisać skryptów operacji kopiowania, a obsłużysz tylko część sql :).
Marian
ooooch, to może być przydatne. Nowe możliwości rozważenia.
jcolebrand
0

Najłatwiejszym sposobem uaktualnienia schematu w celu dopasowania do tych systemów jest użycie narzędzia takiego jak Red Gate SQL Compare lub Embarcadero DB Change Manager.

Dostępnych jest wiele innych narzędzi, które prawdopodobnie mogą wykonać to samo porównanie schematu, a nawet udostępnić DDL do uaktualnienia schematu bazy danych.

Opcje

  1. Użyj narzędzia innej firmy
  2. Tworzenie kopii zapasowych i przywracanie bazy danych - może być konieczne przywrócenie do instancji tymczasowej w celu usunięcia danych (z powodu ograniczeń miejsca na laptopie)
  3. Napisz własny skrypt baz danych za pomocą SMO i po prostu stwórz zadanie, które wykonuje skrypty obiektów, a następnie twórz schemat co miesiąc / czas, gdy go potrzebujesz, a następnie użyj SSIS, aby załadować dane do nowych obiektów.
johndacostaa
źródło
Jak działa „Kopia zapasowa i przywracanie bazy danych” dla instancji? I chcesz zachować dane w tych tabelach, ponieważ jest to pełny zestaw danych, tylko mniejszy niż produkcji.
jcolebrand
SSIS prawdopodobnie pozwoliłby mi zrobić to, czego potrzebuję, ale nie wiem wystarczająco dużo na ten temat. Powinienem zbadać dalej.
jcolebrand
@jcolebrand - zasugerowałem przywracanie kopii zapasowej, po prostu musiałbym rozważyć, jak przenieść dane z systemu na żywo do systemu demonstracyjnego podczas wykonywania takich czynności, jak dodawanie kolumn. Ma to jednak tę wadę, że wymaga przywracania, a następnie czyszczenia danych przed kolejną kopią zapasową oraz przywracaniem / odłączaniem i dołączaniem.
johndacostaa