Muszę skopiować bazę danych ze zdalnego serwera na lokalny. Próbowałem użyć programu SQL Server Management Studio, ale tworzy on kopię zapasową tylko na dysku na zdalnym serwerze.
Kilka punktów:
- Nie mam dostępu do zdalnego serwera w sposób umożliwiający kopiowanie plików;
- Nie mam dostępu do konfiguracji ścieżki UNC do mojego serwera;
Wszelkie pomysły na to, jak mogę skopiować tę bazę danych? Czy będę musiał używać narzędzi innych firm?
sql
sql-server
backup
Fernando
źródło
źródło
Generate and Publish Scripts
opcji. Dostaję wszystkie tabele i schemat, ale nie otrzymałem żadnych danych z tabelami. Jak mogę to naprawić?Odpowiedzi:
W Microsoft SQL Server Management Studio możesz kliknąć prawym przyciskiem myszy bazę danych, którą chcesz wykonać kopię zapasową, a następnie kliknąć Zadania -> Generuj skrypty.
Wyskakujące okno otwiera kreatora, w którym można ustawić następujące opcje, aby wykonać przyzwoitą kopię zapasową bazy danych, nawet na zdalnym serwerze :
Gdy to zrobisz, będziesz mieć gotowy skrypt zapasowy przed sobą. Utwórz nową lokalną (lub zdalną) bazę danych i zmień pierwszą instrukcję „USE” w skrypcie, aby użyć nowej bazy danych. Zapisz skrypt w bezpiecznym miejscu i uruchom go na nowej, pustej bazie danych. Powinno to stworzyć (prawie) zduplikowaną lokalną bazę danych, którą można następnie wykonać w dowolny sposób.
Jeśli masz pełny dostęp do zdalnej bazy danych, możesz zaznaczyć opcję „skryptuj wszystkie obiekty” w pierwszym oknie kreatora, a następnie zmień opcję „Baza danych skryptów” na True w następnym oknie. Uważaj jednak, musisz wykonać pełne wyszukiwanie i zamianę nazwy bazy danych w skrypcie na nową bazę danych, której w tym przypadku nie będziesz musiał utworzyć przed uruchomieniem skryptu. Powinno to stworzyć dokładniejszy duplikat, ale czasami nie jest dostępny z powodu ograniczeń uprawnień.
źródło
Po pierwsze, przyznaj pełne uprawnienia kontroli ścieżce lokalnej na twoim komputerze (jak pokazano poniżej) wszystkim. (Lub alternatywnie udzielić uprawnień specjalnie dla konta agenta SQL Server).
Po drugie, wykonaj następujące czynności:
źródło
Aby skopiować tylko dane i schemat (nie kopiuje procedur przechowywanych, funkcji itp.), Skorzystaj z Kreatora importu i eksportu programu SQL Server i wybierz Nowy ... podczas wybierania docelowej bazy danych.
Kliknij prawym przyciskiem myszy Baza danych> Zadania> Importuj dane.
Wybierz źródło danych
Wybierz miejsce docelowe
New...
Reszta jest prosta.
źródło
Nie można utworzyć kopii zapasowej ze zdalnego serwera na dysk lokalny - po prostu nie ma takiej możliwości. I o ile mi wiadomo, nie ma narzędzi innych firm, aby to zrobić.
Wszystko, co możesz zrobić, to utworzyć kopię zapasową na zdalnym serwerze, poprosić kogoś, aby ją skompresował i wysłał do Ciebie.
źródło
Wiem, że to późna odpowiedź, ale muszę skomentować najczęściej głosowaną odpowiedź, która mówi, aby użyć opcji generowania skryptów w SSMS.
Problem w tym, że ta opcja niekoniecznie generuje skrypt w prawidłowej kolejności wykonywania, ponieważ nie bierze pod uwagę zależności.
W przypadku małych baz danych nie stanowi to problemu, ale w przypadku większych jest to z pewnością spowodowane koniecznością ręcznej zmiany kolejności tego skryptu. Wypróbuj to na bazie 500 obiektów;)
Niestety w tym przypadku jedynym rozwiązaniem są narzędzia innych firm.
Z powodzeniem korzystałem z narzędzi porównawczych ApexSQL (Diff i Data Diff) do podobnych zadań, ale nie można się pomylić z żadnymi innymi już tutaj wymienionymi, szczególnie z Red Gate.
źródło
Możesz wypróbować SQLBackupAndFTP . Stworzy skrypty do utworzenia wszystkich obiektów w bazie danych i instrukcje INSERT dla wszystkich wierszy w tabelach. W dowolnej bazie danych możesz uruchomić ten plik skryptu, a cała baza danych zostanie ponownie utworzona.
źródło
Na blogu znajduje się opis kopiowania zdalnej bazy danych:
Wykonaj kopię zapasową bazy danych SQL Server 2008 ze współużytkowanego środowiska hostingowego
źródło
Istnieje 99% rozwiązanie, aby pobrać plik BAK ze zdalnego serwera SQL na lokalny komputer. Opisałem to tam w moim poście http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc
Ogólnie będzie to wyglądało tak:
wykonaj skrypt SQL, aby wygenerować pliki BAK
uruchom skrypt sql, aby wstawić każdy plik BAK do tabeli temp z typem pola varbinary i wybierz ten wiersz i pobierz dane
powtórz poprzedni krok tyle razy, ile masz plików BAK
uruchom skrypt sql, aby usunąć wszystkie zasoby tymczasowe
to wszystko, masz pliki Bak na lokalnym komputerze.
źródło
Możesz użyć Kopiuj bazę danych ... kliknij prawym przyciskiem myszy zdalną bazę danych ... wybierz zadania i użyj kopiuj bazę danych ... zapyta Cię o serwer źródłowy i docelowy. że twoje źródło jest zdalne, a miejscem docelowym jest lokalna instancja serwera SQL.
to jest takie proste
źródło
Gang AppHarbor boryka się z tym i opracował tymczasowe rozwiązanie z wykorzystaniem obiektów do zarządzania serwerem SQL i SqlBulkCopy.
Sprawdź ich post na blogu lub przejdź bezpośrednio do kodu .
Przetestowali to tylko z AppHarbor, ale może warto to sprawdzić.
źródło
Powyższe odpowiedzi są po prostu nieprawidłowe. Skrypt SQL nawet z danymi nie jest kopią zapasową. Kopia zapasowa to plik BAK, który zawiera pełną bazę danych w bieżącej strukturze, w tym indizes.
Oczywiście plik BAK zawierający pełną kopię zapasową wszystkich danych i indeksów ze zdalnej bazy danych SQL Server można pobrać w systemie lokalnym.
Można to zrobić za pomocą oprogramowania komercyjnego, aby bezpośrednio zapisać kopię zapasową pliku BAK na komputerze lokalnym, na przykład Ten plik utworzy kopię zapasową ze zdalnej bazy danych SQL na komputerze lokalnym.
źródło
Jak powiedział Martin Smith, jeśli nie masz dostępu do maszyny lub systemu plików, będziesz musiał użyć narzędzi innych firm, takich jak Red Gate lub Adept, aby porównać systemy źródłowe i docelowe. Narzędzia Red Gate pozwolą ci kopiować obiekty i schematy ORAZ dane.
źródło
w ten sam sposób można wykonać kopię zapasową ze zdalnej instancji programu SQL Server na dysk lokalny, pod warunkiem spełnienia następującego warunku:
Teraz, określając polecenie kopii zapasowej, użyj ścieżki folderu współdzielonego, określając opcję dysku.
źródło
po prostu spróbuj tego:
1) Udostępnij folder z pełnym uprawnieniem na swoim komputerze
2) na serwerze SQL: panel sterowania -> narzędzia administracyjne -> usługi -> kliknij prawym przyciskiem myszy wszystkie usługi SQL
na karcie logowania powinien zacząć się od administratora domeny
3) w kreatorze konserwacji serwera SQL umieść lokalizację kopii zapasowej i folder (\ twoja_komputera \ sharedfoldernam)
W naszej firmie wykonałem zdalną kopię zapasową na 8 serwerach SQL Server 2008
źródło
Jestem zdziwiony, że nikt nie wspomniał o skryptach tworzenia kopii zapasowych oferowanych przez Ola Hallengren których absolutnie nie pozwalają na tworzenie kopii zapasowych DB ze zdalnego serwera do ścieżki UNC w sieci za darmo (Jestem faktycznie używając go jako typ I aby wykonać kopię zapasową bazy danych z serwera deweloperskiego, do którego nie mam dostępu zdalnego poza SSMS, do udziału na moim komputerze deweloperskim). Jest to dostępne od 2008 roku i działa na SQL Server 2005 do 2014 roku.
Musisz upewnić się, że skonfigurowany udział ma wystarczający dostęp: zazwyczaj pozwalam na pełny odczyt / zapis grupie AD „Wszyscy” na czas tworzenia kopii zapasowej, ponieważ jestem zbyt leniwy, aby wymyślić coś bardziej restrykcyjnego, ale to osobisty wybór.
Jest dobrze używany, dobrze udokumentowany i bardzo elastyczny. Zwykle umieszczam procs i tabelę rejestrowania w ich własnej małej bazie danych narzędzi, a następnie odpalam. Pod warunkiem, że wszystko jest w domenie AD i nie jest zdalne w tym sensie, że znajduje się na kolokowanym serwerze lub czymś podobnym, działa to bardzo dobrze.
Przepraszam za dodanie do bardzo starego wątku, ale natknąłem się na to, szukając czegoś innego i uznałem, że jest to wartościowy dodatek dla każdego, kto szuka tego tematu.
źródło
W przypadku 2019 r. Polecam użycie mssql-scripter, jeśli chcesz mieć rzeczywistą lokalną kopię zapasową. Tak, to skrypty, ale możesz je dostosować, aby zawierały wszystko, co chcesz, w tym wszystkie dane. Napisałem skrypt bash, aby codziennie wykonywać automatyczne kopie zapasowe na maszynie z systemem Linux. Sprawdź moją treść:
źródło
Mógłbym to zrobić raz ... Aby to zrobić, musisz mieć udział otwarty na zdalnym serwerze. możesz bezpośrednio umieścić kopię zapasową w samym udziale, niż w domyślnej lokalizacji ...
Zwykle administrator bierze kopię zapasową i udostępnia ją nam w folderze udostępnionym. Próbowałem, czy to zadziała, jeśli umieściłem tam kopię zapasową. Zadziałało.
źródło
Jeśli korzystasz z opcji Generuj skrypty w SSMS, kliknij przycisk Zaawansowane. W opcji „Generuj skrypty dla obiektów zależnych” kliknij Prawda. Kliknięcie tego powoduje, że wszelkie zależności każdego obiektu również zostaną zapisane w odpowiedniej kolejności.
źródło
Niektóre programy do tworzenia kopii zapasowych innych firm umożliwiają ustawienie przesyłania plików z określonymi uprawnieniami sieci. Jest to bardzo przydatne, gdy usługa SQL Server działa na ograniczonym koncie i nie ma wystarczających uprawnień sieciowych. Spróbuj użyć EMS SQL Backup, który rozwiązuje to zadanie.
źródło
W tym celu używam narzędzi Redgate Backup Pro 7 . możesz utworzyć kopię lustrzaną z pliku kopii zapasowej w kafelku w innej lokalizacji. i może automatycznie skopiować plik kopii zapasowej po utworzeniu w sieci i pamięci hosta.
źródło
Utwórz lokalny folder współdzielony z uprawnieniami „wszyscy” do odczytu / zapisu
Połącz się z docelową bazą danych, rozpocznij tworzenie kopii zapasowej i wskaż udział, jak pokazano poniżej
\ mymachine \ shared_folder \ mybackup.bak
(Wypróbowany w środowisku domeny Windows)
źródło
Wiem, że to starszy post, ale dla tego, co jest warte, odkryłem, że „najprostszym” rozwiązaniem jest kliknięcie bazy danych prawym przyciskiem myszy i wybranie „Zadania” -> „Eksportuj warstwę danych”. Możliwe, że ta opcja jest dostępna tylko dlatego, że serwer jest hostowany na platformie Azure (z tego, co pamiętam, pracowałem z platformą Azure w przeszłości, format .bacpac był tam dość powszechny).
Po wykonaniu tej czynności możesz kliknąć prawym przyciskiem myszy listę „Bazy danych” na lokalnym serwerze i użyć aplikacji „Importuj warstwę danych”, aby pobrać dane na komputer lokalny za pomocą pliku .bacpac.
Pamiętaj, że eksport może zająć dużo czasu. Minęło około dwóch godzin, zanim mój skończył eksportować. Jednak import części jest znacznie szybszy.
źródło
Jeśli jesteś w sieci lokalnej, możesz udostępnić folder na komputerze lokalnym i użyć go jako folderu docelowego kopii zapasowej.
Przykład:
Folder lokalny:
C:\MySharedFolder -> URL: \\MyMachine\MySharedFolder
Zdalny serwer SQL:
Select your database -> Tasks -> Back Up -> Destination -> Add -> Apply '\\MyMachine\MySharedFolder'
źródło