Mam bazę danych SQL i tabele, które chciałbym zreplikować na innym serwerze SQL. Chciałbym stworzyć skrypt SQL, który tworzy bazę danych i tabele w jednym skrypcie.
Mogę utworzyć skrypt „Utwórz” za pomocą programu SQL Management Studio dla każdego przypadku (bazy danych i tabel), ale chciałbym wiedzieć, czy wystarczy połączenie obu skryptów „Utwórz” w jeden skrypt.
Dzięki.
sql
sql-server
Tony
źródło
źródło
Odpowiedzi:
W SQL Server Management Studio możesz kliknąć prawym przyciskiem myszy bazę danych, którą chcesz replikować, i wybrać opcję „Script Database as”, aby narzędzie utworzyło odpowiedni plik SQL do replikacji tej bazy danych na innym serwerze. Możesz powtórzyć ten proces dla każdej tabeli, którą chcesz utworzyć, a następnie scalić pliki w jeden plik SQL. Nie zapomnij dodać instrukcji using po utworzeniu bazy danych, ale przed utworzeniem jakiejkolwiek tabeli.
W nowszych wersjach programu SQL Server można to uzyskać w jednym pliku w programie SSMS.
Spowoduje to uruchomienie kreatora, w którym można skryptować całą bazę danych lub tylko jej części. Wydaje się, że nie ma na to sposobu w języku T-SQL.
źródło
Chociaż odpowiedź Claytona doprowadzi Cię tam (w końcu), w SQL2005 / 2008 / R2 / 2012 masz znacznie łatwiejszą opcję:
Kliknij prawym przyciskiem myszy bazę danych, wybierz,
Tasks
a następnieGenerate Scripts
, co spowoduje uruchomienie Kreatora skryptów. Pozwala to na wygenerowanie pojedynczego skryptu, który może odtworzyć pełną bazę danych, w tym tabelę / indeksy i ograniczenia / procedury składowane / funkcje / użytkownicy / itp. Istnieje wiele opcji, które można skonfigurować, aby dostosować wyjście, ale większość z nich jest oczywista.Jeśli jesteś zadowolony z domyślnych opcji, możesz wykonać całą pracę w ciągu kilku sekund.
Jeśli chcesz odtworzyć dane w bazie danych (jako seria INSERTS), polecam również SSMS Tools Pack (bezpłatna wersja SQL 2008, płatna wersja SQL 2012).
źródło
Doskonałe wyjaśnienie można znaleźć tutaj: Generuj skrypt w SQL Server Management Studio
Dzięki uprzejmości Ali Issa Oto, co musisz zrobić:
Jeśli chcesz stworzyć skrypt, który po prostu generuje tabele (bez danych), możesz pominąć zaawansowaną część instrukcji!
źródło
Nie jestem pewien, dlaczego SSMS nie bierze pod uwagę kolejności wykonania, ale po prostu nie. Nie jest to problem w przypadku małych baz danych, ale co, jeśli baza danych zawiera 200 obiektów? W takim przypadku kolejność wykonywania ma znaczenie, ponieważ nie jest łatwo przejść przez wszystkie te elementy.
W przypadku nieuporządkowanych skryptów generowanych przez SSMS możesz śledzić
a) Wykonaj skrypt (niektóre obiekty zostaną wstawione trochę przyzwyczajenie, będą błędy)
b) Usuń wszystkie obiekty ze skryptu, które zostały dodane do bazy danych
c) Wróć do a), aż wszystko zostanie ostatecznie wykonane
Alternatywną opcją jest użycie narzędzia innej firmy, takiego jak ApexSQL Script lub innych narzędzi już wspomnianych w tym wątku ( pakiet narzędzi SSMS, Red Gate i inne).
Wszystko to zadba o Twoje zależności i pozwoli Ci zaoszczędzić jeszcze więcej czasu.
źródło
Tak, możesz dodać dowolną liczbę instrukcji SQL do jednego skryptu. Jedna uwaga: liczy się kolejność. Nie możesz WSTAWIĆ do tabeli, dopóki jej nie utworzysz; nie możesz ustawić klucza obcego, dopóki klucz podstawowy nie zostanie włożony.
źródło