Kopia zapasowa na poziomie tabeli

Odpowiedzi:

89

Nie można użyć BACKUP DATABASEpolecenia do wykonania kopii zapasowej pojedynczej tabeli, chyba że oczywiście dana tabela jest przydzielona do jej własnej FILEGROUP.

Zgodnie z sugestią możesz wyeksportować dane tabeli do pliku CSV. Teraz, aby uzyskać definicję swojej tabeli, możesz „wykreślić” CREATE TABLEskrypt.

Możesz to zrobić w SQL Server Management Studio przez:

klikając prawym przyciskiem myszy Baza danych> Zadania> Generuj skrypt

Następnie możesz wybrać tabelę, którą chcesz skrypty, a także dołączyć wszelkie powiązane obiekty, takie jak ograniczenia i indeksy.

aby uzyskać dostęp do samego DATAtylko schema, musisz wybrać Advancedna karcie ustawianie opcji skryptów, aw GENERALsekcji ustawić Types of data to scriptzaznaczSchema and Data

Mam nadzieję, że to pomoże, ale jeśli potrzebujesz dalszej pomocy, skontaktuj się ze mną bezpośrednio.

John Sansom
źródło
„Kreator publikacji bazy danych” zautomatyzuje opisane przeze mnie kroki.
John Sansom,
25
John, nie zapomnij wspomnieć, że aby uzyskać DANE wraz ze schematem, musisz wybrać Advancedna karcie ustawianie opcji skryptów, aw sekcji OGÓLNE ustawić Types of data to scriptwybór Schema and Data. Nie było to oczywiste, kiedy zrobiłem to po raz pierwszy.
Alex C,
Wskazówka Alexa jest bardzo ważna. Czy istnieje sposób, aby to skryptować zamiast przechodzić przez menu w programie SQL Server?
Sooprise
1
Powinieneś być w stanie to osiągnąć, używając kombinacji PowerShell i SMO. Zobacz ten artykuł Phila Factora jako przewodnik: simple-talk.com/sql/database-administration/…
John Sansom,
@AlexC Dziękuję! Uratował mnie ból głowy :)
Simon Whitehead
55

Używam narzędzia do kopiowania zbiorczego, aby tworzyć kopie zapasowe na poziomie tabeli

eksportować:

bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E

importować:

bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

jak widać, można eksportować na podstawie dowolnego zapytania, dzięki czemu można nawet tworzyć przyrostowe kopie zapasowe. Ponadto jest skryptowalny w przeciwieństwie do innych wymienionych tutaj metod, które używają SSMS.

kenwarner
źródło
1
Tylko jedno ostrzeżenie. Jeśli chcesz tylko skopiować tabelę przy użyciu nazwy zamiast zapytania wybierającego, zmień skrypt tak, aby używał OUT zamiast QUERYOUT.
Valamas,
45

Oto kroki, których potrzebujesz. Krok 5 jest ważny, jeśli chcesz danych. Krok 2 to miejsce, w którym możesz wybrać poszczególne tabele.

Wersja stosu EDIT nie jest do końca czytelna ... oto obraz w pełnym rozmiarze http://i.imgur.com/y6ZCL.jpg

Oto kroki wynikające z odpowiedzi Johna Sansoma

Alex C
źródło
Jakiego SSMS używasz @Alex C? W moim SSMS2005 mój kreator różni się od twojego.
KirdApe
Przepraszam, minęły lata, odkąd to odpowiedziałem. Zakładam, że prawdopodobnie używałem 2008. Właśnie sprawdziłem teraz mojego kreatora i nie musisz już KLIKNĄĆ zaawansowane, ale zamiast tego cała lista z ramki 5 (powyżej) pojawia się jako jedna ze stron kreatora. Dodatkowo opcja STRUKTURA i DANE została podzielona na PRAWDA / FAŁSZ dla każdego z nich z osobna. Daj mi znać, jeśli mogę jeszcze w czymś pomóc.
Alex C
19

Możesz uruchomić poniższe zapytanie, aby wykonać kopię zapasową istniejącej tabeli, która utworzy nową tabelę z istniejącą strukturą starej tabeli wraz z danymi.

select * into newtablename from oldtablename

Aby skopiować tylko strukturę tabeli, użyj poniższego zapytania.

select * into newtablename from oldtablename where 1 = 2
Haripriya
źródło
7

Jest to podobne do rozwiązania qntmfred , ale z wykorzystaniem bezpośredniego zrzutu tabeli. Ta opcja jest nieco szybsza (zobacz dokumentację BCP ):

eksportować:

bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E

importować:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Diego
źródło
1
Czy obejmuje to ograniczenia?
user3071284
4

Jeśli szukasz czegoś takiego jak MySQL DUMP, to dobra wiadomość: SQL Server 2008 Management Studio dodał tę możliwość.

W programie SSMS kliknij prawym przyciskiem myszy odpowiednią bazę danych i wybierz opcję Zadania> Generuj skrypty . Następnie na drugiej stronie kreatora opcji upewnij się, że zaznaczasz, że chcesz, aby dane również były skrypty , a wygeneruje on DUMPdla Ciebie plik.

Michael K. Campbell
źródło
3

Utwórz nową grupę plików, umieść w niej tę tabelę i wykonaj kopię zapasową tylko tej grupy plików.

Konstantin Tarkus
źródło
Czy obejmuje to ograniczenia?
user3071284
2

Możesz skorzystać z bezpłatnego Kreatora publikowania bazy danych firmy Microsoft, aby wygenerować pliki tekstowe ze skryptami SQL (UTWÓRZ TABELĘ i WSTAWIĆ DO).

Możesz utworzyć taki plik dla pojedynczej tabeli i „przywrócić” całą tabelę, w tym dane, po prostu uruchamiając skrypt SQL.

Christian Specht
źródło
+1 Dla wszystkich osób przyzwyczajonych do skryptów SQL, jest to opcja, której szukasz. Odznacz opcję „Skryptuj wszystkie obiekty w wybranej bazie danych”, aby wybrać poszczególne tabele. Zrzuty ekranu: products.secureserver.net/products/hosting/ ...
lepe
2

Nie wiem, czy będzie pasować do opisanego tutaj problemu. Musiałem wziąć przyrostową kopię zapasową tabeli! (Należy kopiować tylko nowo wstawione dane). Kiedyś projektowałem pakiet DTS, w którym.

  1. Pobrałem nowe rekordy (na podstawie kolumny „status”) i przesłałem dane do celu. (Poprzez „Zadanie przekształcania danych”)

  2. Potem właśnie zaktualizowałem kolumnę „status”. (Poprzez „Wykonaj zadanie SQL”)

Musiałem poprawnie naprawić „przepływ pracy”.

azmnoman
źródło
2

Użyj Kreatora importu i eksportu programu SQL Server.

  1. ssms
  2. Otwórz aparat bazy danych
  3. Alt. kliknij bazę danych zawierającą tabelę do wyeksportowania
  4. Wybierz „Zadania”
  5. Wybierz „Eksportuj dane ...”
  6. Postępuj zgodnie z instrukcjami kreatora
EndUzr
źródło
1

Każdy model odzyskiwania umożliwia tworzenie kopii zapasowych całej lub częściowej bazy danych SQL Server lub pojedynczych plików lub grup plików bazy danych. Nie można tworzyć kopii zapasowych na poziomie tabeli .

Od: Przegląd kopii zapasowych (SQL Server)

Mitch Wheat
źródło
0

Prawdopodobnie masz dwie opcje, ponieważ SQL Server nie obsługuje kopii zapasowych tabel. Oba rozpoczęłyby się od skryptu tworzenia tabeli. Następnie możesz użyć opcji Script Table - INSERT, która wygeneruje wiele instrukcji wstawiania, lub możesz użyć usług integracji (DTS z 2000) lub podobnych, aby wyeksportować dane jako CSV lub podobny.

Miles D.
źródło
0

Jeśli szukasz możliwości przywrócenia tabeli po tym, jak ktoś omyłkowo usunął z niej wiersze, możesz rzucić okiem na migawki bazy danych. Możesz dość łatwo przywrócić tabelę (lub podzbiór wierszy) z migawki. Zobacz http://msdn.microsoft.com/en-us/library/ms175158.aspx

SPE109
źródło
0

Bezpłatna aplikacja o nazwie SqlTableZip wykona zadanie. Zasadniczo piszesz dowolne zapytanie (które oczywiście może być również [wybierz * z tabeli]), a aplikacja tworzy skompresowany plik ze wszystkimi danymi, który można później przywrócić.

Link: http://www.doccolabs.com/products_sqltablezip.html

asapir
źródło
0

Handy Backup automatycznie tworzy pliki zrzutu z MS SQL Server, w tym MSSQL 2005/2008. Te zrzuty są plikami binarnymi na poziomie tabeli, zawierającymi dokładne kopie określonej zawartości bazy danych.

Aby wykonać prosty zrzut za pomocą Handy Backup, wykonaj następną instrukcję:

  1. Zainstaluj Handy Backup i utwórz nowe zadanie kopii zapasowej.
  2. Wybierz „MSSQL” w kroku 2 jako źródło danych. W nowym oknie zaznacz bazę danych do utworzenia kopii zapasowej.
  3. Wybierz spośród różnych miejsc docelowych, w których będziesz przechowywać kopie zapasowe.
  4. W kroku 4 wybierz opcję tworzenia kopii zapasowej „Pełna”. Skonfiguruj znacznik czasu, jeśli go potrzebujesz.
  5. Pomiń krok 5, chyba że musisz skompresować lub zaszyfrować wynikowy plik zrzutu.
  6. W kroku 6 skonfiguruj harmonogram dla zadania, aby okresowo tworzyć zrzuty (w przeciwnym razie uruchamiaj zadanie ręcznie).
  7. Ponownie, pomiń krok 7 i nadaj swojemu zadaniu nazwę w kroku 8. Gotowe zadanie!

Teraz uruchom nowe zadanie, klikając ikonę przed jego nazwą lub poczekaj na zaplanowany czas. Handy Backup automatycznie utworzy zrzut dla Twojej bazy danych. Następnie otwórz miejsce docelowe kopii zapasowych. Znajdziesz folder (lub kilka folderów) z kopiami zapasowymi MS SQL. Każdy taki folder będzie zawierał plik zrzutu na poziomie tabeli, składający się z niektórych tabel binarnych i ustawień skompresowanych w jednym pliku ZIP.

Inne bazy danych

Handy Backup może zapisywać zrzuty dla MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes i dowolnej ogólnej bazy danych SQL ze sterownikiem ODBC. Niektóre z tych baz danych wymagają dodatkowych kroków w celu ustanowienia połączenia między DBMS a Handy Backup.

Narzędzia opisane powyżej często zrzucają bazy danych SQL jako sekwencję poleceń SQL na poziomie tabeli, przygotowując te pliki do wszelkich potrzebnych ręcznych modyfikacji.

Mark Geek
źródło