Chciałbym zautomatyzować generowanie skryptów w SQL Server Management Studio 2008.
W tej chwili robię:
- Kliknij prawym przyciskiem myszy moją bazę danych, Zadania, „Generuj skrypty ...”
- ręcznie wybierz wszystkie potrzebne opcje eksportu i kliknij wybierz wszystko na karcie „wybierz obiekt”
- Wybierz folder eksportu
- Ostatecznie naciśnij przycisk „Zakończ”
Czy istnieje sposób na zautomatyzowanie tego zadania?
Edycja: Chcę generować skrypty do tworzenia , a nie zmieniać skryptów.
Odpowiedzi:
To, o czym Brann wspomina z pakietu Visual Studio 2008 SP1 Team Suite, to wersja 1.4 Kreatora publikacji bazy danych. Jest instalowany z serwerem sql 2008 (może tylko profesjonalnym?) Do \ Program Files \ Microsoft SQL Server \ 90 \ Tools \ Publishing \ 1.4. Wywołanie VS z eksploratora serwera po prostu to wywołuje. Możesz osiągnąć tę samą funkcjonalność za pomocą wiersza poleceń, na przykład:
Nie wiem, czy wersja 1.4 ma te same problemy co wersja 1.1 (użytkownicy są konwertowani na role, ograniczenia nie są tworzone w odpowiedniej kolejności), ale nie jest to dla mnie rozwiązanie, ponieważ nie obsługuje skryptów obiektów do różnych plików, takich jak opcja Zadania-> Generuj skrypty w programie SSMS. Obecnie używam zmodyfikowanej wersji Scriptio (używa interfejsu MS SMO API), aby działać jako ulepszony zamiennik kreatora publikacji bazy danych (sqlpubwiz.exe). Obecnie nie można go obsługiwać skryptami z wiersza poleceń, mogę dodać ten wkład w przyszłości.
Scriptio został pierwotnie opublikowany na blogu Billa Graziano, ale później został udostępniony CodePlex przez Billa i zaktualizowany przez innych. Przeczytaj dyskusję, aby zobaczyć, jak skompilować do użytku z SQL Server 2008.
http://scriptio.codeplex.com/
EDYCJA: Od tego czasu zacząłem używać produktu RedGate SQL Compare, aby to zrobić. Jest to bardzo fajny zamiennik dla wszystkiego, co powinien być kreator publikacji sql. Jako źródło wybierasz bazę danych, kopię zapasową lub migawkę, a jako lokalizację wyjściową folder, a wszystko ładnie zrzuca do struktury folderów. Jest to ten sam format, którego używa ich inny produkt, kontrola źródła SQL.
źródło
SqlPubwiz ma bardzo ograniczone opcje w porównaniu do generowania skryptów w SSMS. Natomiast opcje dostępne w SMO prawie dokładnie odpowiadają opcjom SSMS, co sugeruje, że jest to prawdopodobnie ten sam kod. (Mam nadzieję, że firma MS nie napisała tego dwa razy!) Istnieje kilka przykładów w witrynie MSDN, takich jak ten, które pokazują tabele skryptów jako pojedyncze obiekty. Jeśli jednak chcesz, aby wszystko działało poprawnie z „pełnym” schematem, który zawiera obiekty „DRI” (deklaratywna integralność odniesienia), takie jak klucze obce, to tabele skryptów indywidualnie nie działają poprawnie na zależności. Okazało się, że konieczne jest zebranie wszystkich numerów URN i przekazanie ich skrypterowi w postaci tablicy. Ten kod, zmodyfikowany z przykładu,
źródło
Microsoft.SqlServer.Management.SqlScriptPublish.ScriptPublishWizard
z zestawu C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Microsoft.SqlServer.Management.SqlScriptPublishUI.dll. Właśnie tego używa SSMS. (Alternatywnie możesz spojrzeć na klasęMicrosoft.SqlServer.Management.UI.GenerateScript
z zestawu C: \ Program Files (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ ReplicationDialog.dll.)Napisałem narzędzie wiersza poleceń open source o nazwie SchemaZen, które to robi. Jest znacznie szybszy niż pisanie skryptów ze studia zarządzania, a jego wyjście jest bardziej przyjazne dla kontroli wersji. Obsługuje skrypty zarówno schematu, jak i danych.
Aby wygenerować skrypty, uruchom:
Następnie, aby odtworzyć bazę danych ze skryptów, uruchom:
źródło
Możesz użyć SQL Server Management Object (SMO) do automatyzacji zadań zarządzania SQL Server 2005, w tym generowania skryptów: http://msdn.microsoft.com/en-us/library/ms162169.aspx .
źródło
Jeśli jesteś programistą, zdecydowanie wybierz SMO. Oto link do klasy Scripter, która jest punktem wyjścia:
Klasa Scripter
źródło
Nie widzę PowerShell z SQLPSX wspomnianego w żadnej z tych odpowiedzi ... Osobiście nie bawiłem się nim, ale wygląda pięknie, prosto w użyciu i idealnie nadaje się do tego typu zadań automatyzacji, takich jak:
(zob .: http://www.sqlservercentral.com/Forums/Topic1167710-1550-1.aspx#bm1168100 )
Strona projektu: http://sqlpsx.codeplex.com/
Główną zaletą tego podejścia jest to, że łączy w sobie konfigurowalność / możliwość dostosowania bezpośredniego korzystania z SMO z wygodą i łatwością utrzymania przy użyciu prostego istniejącego narzędzia, takiego jak Kreator publikacji bazy danych.
źródło
W menu Narzędzia> Opcje> Projektanci> Projektanci tabel i baz danych dostępna jest opcja „Automatycznie generuj skrypty zmian”, która będzie generować jeden dla każdej zmiany wprowadzonej w momencie jej zapisywania.
źródło
Możesz to zrobić za pomocą kodu T-SQL przy użyciu tabel INFORMATION_SCHEMA.
Istnieją również narzędzia innych firm - lubię Apex SQL Script do dokładnie tego zastosowania, o którym mówisz. Uruchamiam go całkowicie z wiersza poleceń.
źródło
Wypróbuj nowe narzędzia wiersza poleceń programu SQL Server do generowania skryptów T-SQL i monitorowania dynamicznych widoków zarządzania.
Działało na mnie jak urok. Jest to nowe narzędzie firmy Microsoft oparte na języku Python, które działa z wiersza poleceń. Wszystko działa tak, jak opisano na stronie Microsoft (patrz link poniżej) Pracowałem dla mnie z serwerem SQL 2012.
Instalujesz go za pomocą pip:
Przegląd parametrów polecenia jak zwykle z h dla pomocy:
Wskazówka: Jeśli logujesz się do SQL-Server poprzez uwierzytelnianie Windows, po prostu zostaw nazwę użytkownika i hasło.
https://cloudblogs.microsoft.com/sqlserver/2017/05/17/try-new-sql-server-command-line-tools-to-generate-t-sql-scripts-and-monitor-dynamic-management- wyświetlenia/
źródło
Jeśli chcesz skorzystać z rozwiązania firmy Microsoft, możesz spróbować: Kreator publikacji bazy danych Microsoft SQL Server 1.1
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
Tworzy proces wsadowy, który można uruchomić w dowolnym momencie, gdy trzeba odbudować skrypty.
źródło
Używam DB Comparer - jest to darmowy i bezproblemowy skrypt w całej bazie danych i można go porównać z innym DB, a także stworzyć skrypt Diff. Doskonały do skryptów zmian od programowania do produkcji. http://www.dbcomparer.com/
źródło
Jest też to proste narzędzie wiersza poleceń, które buduję na moje potrzeby.
http://mycodepad.wordpress.com/2013/11/18/export-ms-sql-database-schema-with-c/
Może wyeksportować całą bazę danych i próbuje wyeksportować zaszyfrowane obiekty. Wszystko jest przechowywane w folderach i oddzielnych plikach sql, co ułatwia porównywanie plików.
Kod jest również dostępny na github.
źródło
Z programu Visual Studio 2008 SP1 TeamSuite:
Na karcie Eksplorator serwera / Połączenia danych znajduje się narzędzie publikowania dla dostawcy, które działa tak samo jak „Kreator publikowania bazy danych Microsoft SQL Server”, ale jest zgodne z MS Sql Server 2008.
źródło
Używam VS 2012 (dla baz danych na MSSQL Server 2008). Porównywanie bazy danych ma możliwość zapisania jej, porównania i opcji. Zasadniczo to są twoje ustawienia dostarczania. Następnie możesz zaktualizować lub wygenerować skrypt.
Po prostu uważam to za trochę niewygodne, aby załadować go z pliku później (przeciągnij i upuść z eksploratora Windows), ponieważ nie widzę pliku w eksploratorze rozwiązań.
źródło