Udostępnij za pośrednictwem


Wdrażanie projektów baz danych

Autor : Jason Lee

Uwaga

W wielu scenariuszach wdrażania w przedsiębiorstwie potrzebna jest możliwość publikowania aktualizacji przyrostowych w wdrożonej bazie danych. Alternatywą jest ponowne utworzenie bazy danych w każdym wdrożeniu, co oznacza utratę danych w istniejącej bazie danych. Podczas pracy z programem Visual Studio 2010 użycie narzędzia VSDBCMD jest zalecanym podejściem do przyrostowego publikowania bazy danych. Jednak następna wersja programu Visual Studio i potoku publikowania sieci Web (WPP) będą zawierać narzędzia obsługujące bezpośrednie publikowanie przyrostowe.

Jeśli otworzysz przykładowe rozwiązanie Contact Manager w programie Visual Studio 2010, zobaczysz, że projekt bazy danych zawiera folder Właściwości zawierający cztery pliki.

Jeśli otworzysz przykładowe rozwiązanie Contact Manager w programie Visual Studio 2010, zobaczysz, że projekt bazy danych zawiera folder Właściwości zawierający cztery pliki.

Razem z plikiem projektu (ContactManager.Database.dbproj w tym przypadku) pliki te kontrolują różne aspekty procesu kompilacji i wdrażania:

  • Plik Database.sqlcmdvars zawiera wartości dla dowolnych zmiennych SQLCMD używanych podczas wdrażania projektu. Każda konfiguracja rozwiązania (na przykład debugowanie i wydanie) może określać inny plik .sqlcmdvars.
  • Plik Database.sqldeployment zawiera ustawienia specyficzne dla wdrożenia, takie jak użycie sortowania zdefiniowanego w projekcie lub sortowania serwera docelowego, czy ponowne utworzenie docelowej bazy danych za każdym razem, czy po prostu zmianę istniejącej bazy danych w celu jej aktualności itd. Każda konfiguracja rozwiązania może określać inny plik .sqldeployment.
  • Plik Database.sqlpermissions jest dokumentem XML, którego można użyć do zdefiniowania wszelkich uprawnień, które chcesz dodać do docelowej bazy danych. Wszystkie konfiguracje rozwiązań współdzielą ten sam plik sqlpermissions.
  • Plik Database.sqlsettings określa właściwości na poziomie bazy danych używane podczas tworzenia bazy danych, takie jak sortowanie do użycia, zachowanie operatorów porównania itd. Wszystkie konfiguracje rozwiązań współużytkować ten sam plik .sqlsettings.

Warto poświęcić chwilę na otwarcie tych plików w programie Visual Studio i zapoznanie się z zawartością.

Podczas tworzenia projektu bazy danych proces kompilacji tworzy dwa pliki:

  • Schemat bazy danych (plik dbschema). W tym artykule opisano schemat bazy danych, którą chcesz utworzyć w formacie XML.
  • Manifest wdrożenia (plik deploymanifest). Zawiera to wszystkie informacje wymagane do utworzenia i wdrożenia bazy danych. Odwołuje się do pliku dbschema wraz z innymi zasobami, takimi jak instrukcje wdrażania (plik .sqldeployment) oraz skrypty SQL przed wdrożeniem lub po wdrożeniu.

Spowoduje to wyświetlenie relacji między tymi zasobami:

Relacja między powyższymi zasobami

Jak widać, plik sqlsettings i plik sqlpermissions są danymi wejściowymi procesu kompilacji. Wraz z plikiem projektu bazy danych te pliki są używane do tworzenia pliku schematu bazy danych. Plik .sqldeployment i plik .sqlcmdvars przechodzą przez proces kompilacji bez zmian. Manifest wdrożenia wskazuje lokalizację schematu bazy danych, plik sqldeployment, plik .sqlcmdvars oraz wszystkie skrypty SQL przed wdrożeniem lub po wdrożeniu.

Dlaczego warto używać usługi VSDBCMD do wdrażania projektu bazy danych?

Istnieją różne podejścia do wdrażania projektów baz danych. Jednak nie wszystkie z nich są odpowiednie do wdrażania projektu bazy danych na serwerach zdalnych w środowisku przedsiębiorstwa. Zastanów się nad tym, czego chcesz użyć we wdrożeniu projektu bazy danych. W scenariuszach wdrażania w przedsiębiorstwie prawdopodobnie chcesz:

  • Możliwość wdrażania projektu bazy danych z lokalizacji zdalnej.
  • Możliwość tworzenia aktualizacji przyrostowych do istniejącej bazy danych.
  • Możliwość dołączania skryptów przed wdrożeniem lub skryptów po wdrożeniu.
  • Możliwość dostosowania wdrożenia do wielu środowisk docelowych.
  • Możliwość wdrożenia projektu bazy danych w ramach większego, zwykle skryptowego wdrożenia rozwiązania jednoetapowego.

Istnieją trzy główne podejścia, których można użyć do wdrożenia projektu bazy danych:

  • Możesz użyć funkcji wdrażania z typem projektu bazy danych w programie Visual Studio 2010. Podczas kompilowania i wdrażania projektu bazy danych w programie Visual Studio 2010 proces wdrażania używa manifestu wdrożenia w celu wygenerowania pliku wdrożenia opartego na języku SQL specyficznego dla konfiguracji kompilacji. Spowoduje to utworzenie bazy danych, jeśli jeszcze nie istnieje lub wprowadzenie jakichkolwiek niezbędnych zmian w bazie danych, jeśli już istnieje. Możesz użyć SQLCMD.exe, aby uruchomić ten plik na serwerze docelowym lub ustawić program Visual Studio, aby utworzyć i uruchomić plik. Wadą tego podejścia jest to, że masz ograniczoną kontrolę nad ustawieniami wdrażania. Często konieczne może być również zmodyfikowanie pliku wdrożenia SQL w celu zapewnienia wartości zmiennych specyficznych dla środowiska. Tego podejścia można użyć tylko z komputera z zainstalowanym programem Visual Studio 2010, a deweloper musi wiedzieć i podać parametry połączenia i poświadczenia dla wszystkich środowisk docelowych.
  • W celu wdrożenia bazy danych w ramach projektu aplikacji internetowej można użyć narzędzia internetowego usług informacyjnych (IIS) (Web Deploy). Jednak takie podejście jest o wiele bardziej złożone, jeśli chcesz wdrożyć projekt bazy danych, a nie po prostu replikować istniejącą lokalną bazę danych na serwerze docelowym. Narzędzie Web Deploy można skonfigurować w celu uruchomienia skryptu wdrażania SQL wygenerowanego przez projekt bazy danych, ale w tym celu należy utworzyć niestandardowy plik docelowy programu WPP dla projektu aplikacji internetowej. Zwiększa to znaczną złożoność procesu wdrażania. Ponadto narzędzie Web Deploy nie obsługuje bezpośrednio aktualizacji przyrostowych istniejących baz danych. Aby uzyskać więcej informacji na temat tego podejścia, zobacz Rozszerzanie potoku publikowania sieci Web na projekt bazy danych pakietu wdrożony plik SQL.
  • Za pomocą narzędzia VSDBCMD można wdrożyć bazę danych przy użyciu schematu bazy danych lub manifestu wdrożenia. Można wywołać VSDBCMD.exe z docelowego programu MSBuild, który umożliwia publikowanie baz danych w ramach większego, skryptowego procesu wdrażania. Zmienne można zastąpić w pliku .sqlcmdvars i wiele innych właściwości bazy danych z polecenia VSDBCMD, co umożliwia dostosowanie wdrożenia dla różnych środowisk bez tworzenia wielu konfiguracji kompilacji. VsDBCMD zapewnia funkcje różnicowania, co oznacza, że wprowadzi tylko niezbędne zmiany w celu dostosowania docelowej bazy danych do schematu bazy danych. VsDBCMD oferuje również szeroką gamę opcji wiersza polecenia, które zapewniają szczegółową kontrolę nad procesem wdrażania.

Z tego przeglądu dowiesz się, że użycie polecenia VSDBCMD z programem MSBuild jest najlepszym rozwiązaniem dla typowego scenariusza wdrażania w przedsiębiorstwie:

Obsługuje Visual Studio 2010 Web Deploy 2.0 VSDBCMD.exe
Czy obsługuje wdrażanie zdalne? Tak Tak Tak
Obsługuje aktualizacje przyrostowe? Tak Nie Tak
Czy obsługuje skrypty przed/po wdrożeniu? Tak Tak Tak
Czy obsługuje wdrażanie w wielu środowiskach? Ograniczony Ograniczony Tak
Czy obsługuje wdrażanie skryptowe? Ograniczony Tak Tak

W pozostałej części tego tematu opisano użycie programu VSDBCMD z programem MSBuild do wdrażania projektów bazy danych.

Opis procesu wdrażania

Narzędzie VSDBCMD umożliwia wdrożenie bazy danych przy użyciu schematu bazy danych (pliku dbschema) lub manifestu wdrożenia (pliku deploymanifest). W praktyce prawie zawsze będziesz używać manifestu wdrożenia, ponieważ manifest wdrożenia umożliwia podanie wartości domyślnych dla różnych właściwości wdrożenia i zidentyfikowanie wszelkich skryptów przed wdrożeniem lub po wdrożeniu skryptów SQL, które chcesz uruchomić. Na przykład to polecenie VSDBCMD służy do wdrażania bazy danych ContactManager na serwerze bazy danych w środowisku testowym:

vsdbcmd.exe /a:Deploy
            /manifest:"…\ContactManager.Database.deploymanifest"
            /cs:"Data Source=TESTDB1;Integrated Security=true"
            /p:TargetDatabase=ContactManager
            /dd+
            /script:"…\Publish-ContactManager-Db.sql"

W takim przypadku:

  • Przełącznik /a (lub /Action) określa, co chcesz zrobić VSDBCMD. Możesz ustawić tę opcję na import lub wdróż. Opcja Importuj służy do generowania pliku dbschema z istniejącej bazy danych, a opcja Wdróż służy do wdrażania pliku dbschema w docelowej bazie danych.
  • Przełącznik /manifest (lub /ManifestFile) identyfikuje plik deploymanifest, który chcesz wdrożyć. Jeśli zamiast tego chcesz użyć pliku dbschema, użyj przełącznika /model (lub /ModelFile).
  • Przełącznik /cs (lub /ConnectionString) udostępnia parametry połączenia dla docelowego serwera bazy danych. Należy pamiętać, że nie zawiera to nazwy bazy danych — usługa VSDBCMD musi nawiązać połączenie z serwerem w celu utworzenia bazy danych; nie musi łączyć się z pojedynczą bazą danych. Jeśli plik .deploymanifest zawiera parametry połączenia, możesz pominąć ten przełącznik. Jeśli mimo to użyjesz przełącznika, wartość przełącznika zastąpi wartość .deploymanifest.
  • Właściwość /p:TargetDatabase zawiera nazwę, którą chcesz przypisać do docelowej bazy danych podczas tworzenia. Spowoduje to zastąpienie wartości właściwości TargetDatabase w pliku .deploymanifest. Możesz użyć składni /p: [nazwa właściwości], aby ustawić szeroką gamę właściwości wdrożenia i zastąpić wszystkie zmienne SQLCMD zadeklarowane w pliku .sqlcmdvars.
  • Przełącznik /dd+ (lub /DeployToDatabase+) wskazuje, że chcesz utworzyć wdrożenie i wdrożyć je w środowisku docelowym. Jeśli określisz /dd-lub pominięto przełącznik, program VSDBCMD wygeneruje skrypt wdrożenia, ale nie wdroży go w środowisku docelowym. Ten przełącznik jest często źródłem nieporozumień i bardziej szczegółowo wyjaśniono w następnej sekcji.
  • Przełącznik /script (lub /DeploymentScriptFile) określa, gdzie chcesz wygenerować skrypt wdrożenia. Ta wartość nie ma wpływu na proces wdrażania.

Aby uzyskać więcej informacji na temat narzędzia VSDBCMD, zobacz Dokumentacja wiersza polecenia dla VSDBCMD.EXE (wdrażanie i importowanie schematu) oraz Instrukcje: przygotowywanie bazy danych do wdrożenia z wiersza polecenia przy użyciu VSDBCMD.EXE.

Aby zapoznać się z przykładem użycia narzędzia VSDBCMD z pliku projektu MSBuild, zobacz Opis procesu kompilacji. Przykłady konfigurowania ustawień wdrażania bazy danych dla wielu środowisk można znaleźć w temacie Dostosowywanie wdrożeń bazy danych dla wielu środowisk.

Opis przełącznika DeployToDatabase

Zachowanie przełącznika /dd lub /DeployToDatabase zależy od tego, czy używasz vsDBCMD z plikiem dbschema, czy plikiem deploymanifest. Jeśli używasz pliku dbschema, zachowanie jest dość proste:

  • Jeśli określisz /dd+ lub /dd, program VSDBCMD wygeneruje skrypt wdrożenia i wdroży bazę danych.
  • Jeśli określisz /dd- lub pominięto przełącznik, program VSDBCMD wygeneruje tylko skrypt wdrożenia.

Jeśli używasz pliku .deploymanifest, zachowanie jest o wiele bardziej skomplikowane. Jest to spowodowane tym, że plik deploymanifest zawiera nazwę właściwości DeployToDatabase , która określa również, czy baza danych jest wdrożona.

<DeployToDatabase>False</DeployToDatabase>

Wartość tej właściwości jest ustawiana zgodnie z właściwościami projektu bazy danych. Jeśli ustawisz akcję Wdróż na utwórz skrypt wdrożenia (.sql),wartość będzie mieć wartość False. Jeśli ustawisz akcję Wdróż na utwórz skrypt wdrożenia (.sql) i wdrożysz w bazie danych, wartość będzie równa True.

Uwaga

Te ustawienia są skojarzone z konkretną konfiguracją kompilacji i platformą. Jeśli na przykład skonfigurujesz ustawienia konfiguracji debugowania , a następnie opublikujesz przy użyciu konfiguracji wydania , ustawienia nie będą używane.

Jeśli na przykład skonfigurujesz ustawienia konfiguracji debugowania, a następnie opublikujesz przy użyciu konfiguracji wydania, ustawienia nie będą używane.

Uwaga

W tym scenariuszu akcja Wdróż powinna być zawsze ustawiona na utwórz skrypt wdrożenia (.sql), ponieważ nie chcesz, aby program Visual Studio 2010 wdrażał bazę danych. Innymi słowy, właściwość DeployToDatabase powinna zawsze mieć wartość False.

Po określeniu właściwości DeployToDatabase przełącznik /dd zastąpi właściwość tylko wtedy, gdy wartość właściwości ma wartość false:

  • Jeśli właściwość DeployToDatabase ma wartość False i określisz /dd+ lub /dd, usługa VSDBCMD zastąpi właściwość DeployToDatabase i wdroży bazę danych.
  • Jeśli właściwość DeployToDatabase ma wartość False i określisz /dd- lub pominięto przełącznik, program VSDBCMD nie wdroży bazy danych.
  • Jeśli właściwość DeployToDatabase ma wartość True, vsDBCMD zignoruje przełącznik i wdroży bazę danych.
  • Skrypt wdrożenia jest generowany w każdym przypadku, niezależnie od tego, czy wdrażasz bazę danych, jak również.

Podsumowanie

W tym temacie omówiono proces kompilowania i wdrażania projektów baz danych w programie Visual Studio 2010. Opisano również, jak można używać VSDBCMD.exe z programem MSBuild do obsługi wdrożenia bazy danych w skali przedsiębiorstwa.

Aby uzyskać więcej informacji na temat tego, jak to działa w praktyce, zobacz Dostosowywanie wdrożeń bazy danych dla wielu środowisk.

Dalsze informacje

Aby uzyskać informacje na temat dostosowywania wdrożeń bazy danych przez utworzenie oddzielnego pliku konfiguracji wdrożenia dla każdego środowiska, zobacz Dostosowywanie wdrożeń bazy danych dla wielu środowisk. Aby uzyskać wskazówki dotyczące konfigurowania członkostwa w rolach bazy danych przez uruchomienie skryptu po wdrożeniu, zobacz Wdrażanie członkostwa w rolach bazy danych w środowiskach testowych. Aby uzyskać wskazówki dotyczące zarządzania niektórymi unikatowymi wyzwaniami, jakie nakładają bazy danych członkostwa, zobacz Wdrażanie baz danych członkostwa w środowiskach przedsiębiorstwa.

Te tematy w witrynie MSDN zawierają szersze wskazówki i podstawowe informacje dotyczące projektów baz danych programu Visual Studio i procesu wdrażania bazy danych: