2008-10-03 11 views
17

Jestem w sytuacji, w której chciałbym wygenerować skrypt dla bazy danych, którą mógłbym uruchomić na innym serwerze i uzyskać bazę danych identyczną z oryginalną, ale bez żadnych danych. W istocie chcę skończyć z dużym skryptem tworzenia, który przechwytuje schemat bazy danych.Czy istnieje alternatywa dla "biednych ludzi" dla RedGate do tworzenia skryptów dla całego schematu bazy danych?

Pracuję w środowisku, w którym zainstalowany jest program SQL Server 2000, i nie mogę zainstalować narzędzi klienta klienckiego 2005 (w przypadku, gdyby to one pomogły). Nie stać mnie na RedGate, ale naprawdę chciałbym mieć bazę danych z identycznym schematem na innym serwerze.

Wszelkie sugestie? Dowolne proste .exe (bez instalacji) narzędzia, wskazówki lub triki T-SQL będą mile widziane.

Aktualizacja: Baza pracuję z ma 200 + tabele i kilka relacji klucza obcego i ograniczeń, więc ręcznie włączony w każdej tabeli i wklejanie razem scenariusz nie jest realną opcją. Szukam czegoś lepszego niż to ręczne rozwiązanie

Dodatkowa aktualizacja Chyba że czegoś mi brakuje, to nie jest opłacalne rozwiązanie przy użyciu narzędzi SQL 2000. Po wybraniu opcji generowania skryptu tworzenia w bazie danych. Kończę skryptem, który zawiera polecenie CREATE DATABASE i nie tworzy żadnego z obiektów - tabel, ograniczeń itp. Studio zarządzania SQL 2005 może również obsługiwać obiekty, ale baza danych znajduje się w środowisku, w którym nie ma sposób dla mnie podłączyć instalację Management Studio do niego.

Odpowiedz

12

Run SQL Server Management Studio, kliknij prawym przyciskiem myszy na bazie danych i wybrać Script Database as > Create to > file

To dla SQL Server 2005. SQL Server 2000 Enterprise Manager posiada podobną komendę. Wystarczy kliknąć prawym przyciskiem myszy na bazę danych > All Tasks > Generate Scripts.

EDYCJA: W SQL Server 2005 można wybrać "Baza danych" w panelu eksploratora obiektów i wybrać kilka baz danych w okienku szczegółów. Następnie kliknij prawym przyciskiem myszy swój wybór i "Baza danych skryptów jako> Utwórz do> pliku". Spowoduje to umieszczenie ich wszystkich w jednym skrypcie i obejmie wszystkie tabele, klucze, procedury składowane i ograniczenia.

0

Pozostali są poprawne, ale w celu stworzenia pełnej bazy danych od podstaw, trzeba stworzyć „urządzenie” w SQL przed uruchomieniem tworzyć tabele, skrypty i procedury ...

Użyj ADODB, ponieważ prawie każdy (jeśli nie każdy) system Windows zainstalował go w celu wykonania skryptu.

Do diabła, można nawet napisać vbScript, który wykonuje, aby zbudować całą bazę danych. Wszelkie tabele domeny, które masz, musisz pamiętać, aby włączyć wstawianie tożsamości przed dodaniem elementów do bazy danych.

Jestem otwarty na udostępnianie kodu źródłowego, jeśli jest to potrzebne. Kilka lat temu musiałem napisać to samo, a skończyło się na 3 skryptach, jednym, które stworzyło urządzenie, następnie tabelach, następnie procedurach/wyzwalaczach i danych domeny. Napisałem kod, aby przeanalizować domyślny skrypt i zezwolić użytkownikowi na podanie jego własnej bazy danych, loginów itp. Nie musisz wcale iść tak daleko.

Mam nadzieję, że to pomoże w ogóle.

+0

Nie jestem pewien, co masz na myśli, mówiąc "Utwórz urządzenie", może baza danych ?. Pod warunkiem, że konto SQL ma wystarczające uprawnienia, absolutnie wszystko może być skryptowane. – Kev

1

Michael Lang, po kliknięciu prawym przyciskiem myszy na bazie danych i wybraniu skryptu, istnieje kilka pól opcji, które należy kliknąć, aby wszystko zostało wygenerowane.Rok 2005 jest znacznie łatwiejszy w tym względzie, ale 2000 może to zrobić, wystarczy wybrać odpowiednie opcje.

9

Zakładam, że nie można zainstalować SQL Server Management Studio. Nawet bezpłatna wersja. Jeśli jest to coś jednorazowego, zainstalowałbym narzędzia czerwonej bramy. Wersja próbna jest w pełni funkcjonalna przez 14 dni. Wykonaj swoją pracę, a następnie odinstaluj. Możesz również sprawdzić http://www.xsqlsoftware.com/, mają one podobne funkcje, jak Red Gate. Jeśli twoja baza danych jest mała, mają dla ciebie bezpłatną opcję. Lubię też http://www.apexsql.com/. Skorzystaj z wersji próbnej jednego z nich, a następnie spróbuj ponownie, aby przekonać szefa do zakupu.

+0

Dzięki za sugestię! Kolejną przeszkodą, o której nie wspomniałem, jest to, że natychmiastowy problem, który próbuję rozwiązać, obejmuje hostowane bazy danych klientów i blokadę środowiska, w której muszę przeskakiwać przez poważne pętle, aby zainstalować oprogramowanie. Bardzo pomocne i odpowiednie sugestie! –

2

Wielokrotnie z powodzeniem używam this program from CodeProject. Nie tylko wykreśla schemat, może (opcjonalnie) wypisać wszystkie instrukcje INSERT, które będą potrzebne do odtworzenia bazy danych.

Używałem go wcześniej przeciwko SQL Server 2000. Oczywiście, jeśli masz milion wierszy w tabeli, może nie być dobrym pomysłem wypisanie zawartości, ale naprawdę jest to naprawdę dobre narzędzie do stworzenia serii skryptów SQL do replikacji bazy danych.

1

Kreator Microsoft Database Publishing Wizard (w Visual Studio 2008).

6

Oprócz powyższych odpowiedzi, chciałbym zasugerować, że (przynajmniej w przypadku przyszłych projektów) nie macie Państwo nadrzędnego projektu bazy danych w samej bazie danych.

Jednym ze sposobów osiągnięcia tego jest proste utrzymywanie tabel bazy danych, procedur itp. Jako skryptów "CREATE" od pierwszego dnia i opracowanie głównego skryptu, który będzie pobierał wszystkie poszczególne skrypty w celu wdrożenia do bazy danych twojego wybór.

Bardziej wyrafinowanym rozwiązaniem jest użycie czegoś takiego jak Visual Studio Database Edition (Prawdopodobnie za drogie, jeśli twoje komentarze są czymś, przez co można przejść), co pozwala traktować każdy obiekt bazy danych jako węzeł w projekcie, jednocześnie umożliwiając Cała sprawa zostanie wdrożona za pomocą kilku kliknięć.

Objaśnienie obu tych opcji jest zbyt uproszczone, ponieważ istnieje wiele innych problemów - wersjonowanie, migracja danych itp. - ale główna zasada jest taka sama.

Po wyodrębnieniu skryptu - przy użyciu jednej z pozostałych odpowiedzi - warto rozważyć użycie tego skryptu jako podstawy dla "wzorca".

Po prostu zachowaj "projekt" z bazy danych - to tylko dla "implementacji".

Staraj się myśleć o tym procesie jako zbliżonym do rozwijającego się kodu - źródło i pliki binarne są przechowywane osobno, a drugie są generowane z pierwszego.

+0

Doskonałe sugestie. Właściwie użyłem tej strategii już raz w projekcie - sprawdzanie w skryptach do VSS (chciałem, żebyśmy używali czegoś, gdybyś mógł sprawdzić zestawy w wersjach, ale robiłeś to z etykietami) Życzę programistom, których bym chciał odziedziczył to od tego zrobił. –

+0

W rzeczywistości wszystkie nasze polecenia CREATE są umieszczane w jednym skrypcie - może to nie być najlepsze podejście, ale działa GREAT do szybkich zmian i do celów dokumentacyjnych. –

1

Jak wspomniano w SQL Server 2000 komenda do wykorzystania jest:

Choć w Enterprise Manager wybierz bazę danych chcesz skrypt obiektów z, a następnie kliknij prawym przyciskiem i wybierz Wszystkie zadania -> Generowanie Skrypty SQL ...

ile w opcje Okienko to poręczny, aby wybrać opcję Tworzenie jednego pliku za obiekt to w ten sposób można przechowywać każdy obiekt w kontroli źródła oddzielnie.

Więc kiedy tylko zrobić kilka nowości na TABLEA można to sprawdzić w kontroli źródła, aby inni mogli wiedzieć, że działa na nim, a po zakończeniu można skrypt pojedynczego obiektu i zapisać sprawdzić go w.

Aby zakodować pojedynczy obiekt, możesz ustawić tę samą opcję. Wszystkie zadania -> Wygeneruj skrypty SQL ..., a następnie wybierz tylko jeden obiekt.

Jedyny problem z tym podejściem polega na tym, że gdy chcesz przywrócić pełną bazę danych, musisz zająć się obiektami zależnymi w tym sensie, że obiekt najwyższego poziomu musi zostać przywrócony przed tymi, od których zależy.

Ironicznie, gdy skryptujesz całą bazę danych do jednego pliku, obiekty nie są uporządkowane pod względem zależności, ale raczej w oparciu o datę utworzenia. To prowadzi do błędów przy próbie użycia go do przywrócenia kompletnego DB.

Skończyło się tworząc plik wsadowy, który stworzy każdy obiekt osobno wzywającą „osql”

I to wszystko działa całkiem dobrze w tym czasie

Teraz używamy SQLCompare Pro i Sejfy nas przed lub tym kłopotów, ale jeśli nie robisz tego często, możesz bez niego żyć.

+0

Bummer - Myślałem, że niejasno pamiętałem problem z zależnościami. Zgaduję, że posortowanie ich nie będzie zabawne, ponieważ mam ponad 200 stołów. Dziękujemy za pomocną odpowiedź. –

2

Jeśli jest to jednorazowa operacja i nie ma ochoty zamawiać skryptów obiektów samodzielnie, wystarczy download a free trial version of RedGate SQL Compare.

Jest to 14 dni pełnej wersji roboczej, więc wykona całą pracę za Ciebie - jest to całkowicie legalne rozwiązanie. I będziesz mieć wszystkie skrypty do wykorzystania w przyszłości za pomocą ręcznego skryptowania. W każdym razie jestem całkiem pewny, że jeśli dowiesz się, jak przydatne jest to narzędzie, kupisz je na późniejszym etapie i prawdopodobnie spodziewają się tego, oferując w pełni działającą wersję próbną. Jakoś zadziałało w ten sposób w moim przypadku.

Należy pamiętać, że po wygaśnięciu okresu próbnego ma on wpływ na wszystkie narzędzia, dlatego należy go jak najlepiej wykorzystać.

+1

Używamy SQL Compare, aby porównać naszą bazę danych dev z pustą bazą danych i pobrać skrypt z tego, który można zastosować do dowolnej pustej bazy danych, aby był taki sam jak wersja dev. Narzędzie ma o wiele więcej i choć niekoniecznie tanie, jest niezbędne. –