Udostępnij za pośrednictwem


Dostosowywanie wdrożeń bazy danych dla wielu środowisk

Autor: Jason Lee

W tym temacie opisano sposób dostosowywania właściwości bazy danych do określonych środowisk docelowych w ramach procesu wdrażania.

Uwaga

W tym temacie założono, że wdrażasz projekt bazy danych programu Visual Studio 2010 przy użyciu MSBuild.exe i VSDBCMD.exe. Aby uzyskać więcej informacji na temat tego, dlaczego można wybrać tę metodę, zobacz Web Deployment in the Enterprise and Deploying Database Projects (Wdrażanie w projektach baz danych w przedsiębiorstwie i wdrażaniu projektów baz danych).

Podczas wdrażania projektu bazy danych w wielu miejscach docelowych często należy dostosować właściwości wdrożenia bazy danych dla każdego środowiska docelowego. Na przykład w środowiskach testowych zwykle można ponownie utworzyć bazę danych w każdym wdrożeniu, podczas gdy w środowiskach przejściowych lub produkcyjnych znacznie bardziej prawdopodobne jest tworzenie przyrostowych aktualizacji w celu zachowania danych.

W projekcie bazy danych programu Visual Studio 2010 ustawienia wdrożenia znajdują się w pliku konfiguracji wdrożenia (sqldeployment). W tym temacie pokazano, jak utworzyć pliki konfiguracji wdrożenia specyficzne dla środowiska i określić ten, którego chcesz użyć jako parametru VSDBCMD.

Ten temat stanowi część serii samouczków opartych na wymaganiach dotyczących wdrażania przedsiębiorstwa fikcyjnej firmy o nazwie Fabrikam, Inc. W tej serii samouczków użyto przykładowego rozwiązania — rozwiązania Contact Manager — do reprezentowania aplikacji internetowej o realistycznym poziomie złożoności, w tym aplikacji ASP.NET MVC 3, usługi Windows Communication Foundation (WCF) i projektu bazy danych.

Metoda wdrażania w centrum tych samouczków jest oparta na metodzie podzielonego pliku projektu opisanego w artykule Understanding the Project File (Opis pliku projektu), w którym proces kompilacji jest kontrolowany przez dwa pliki projektu — jeden zawierający instrukcje kompilacji, które mają zastosowanie do każdego środowiska docelowego, oraz jeden zawierający ustawienia kompilacji i wdrażania specyficzne dla środowiska. W czasie kompilacji plik projektu specyficzny dla środowiska jest scalony z plikiem projektu niezależnego od środowiska w celu utworzenia pełnego zestawu instrukcji kompilacji.

Omówienie zadań

W tym temacie założono, że:

Aby utworzyć system wdrażania obsługujący różne właściwości wdrażania bazy danych między środowiskami docelowymi, należy wykonać następujące kroki:

  • Utwórz plik konfiguracji wdrożenia (sqldeployment) dla każdego środowiska docelowego.
  • Utwórz polecenie VSDBCMD, które określa plik konfiguracji wdrożenia jako przełącznik wiersza polecenia.
  • Parametryzacja polecenia VSDBCMD w pliku projektu Microsoft Build Engine (MSBuild), aby opcje VSDBCMD są odpowiednie dla środowiska docelowego.

W tym temacie pokazano, jak wykonać każdą z tych procedur.

Tworzenie plików konfiguracji wdrożenia Environment-Specific

Domyślnie projekt bazy danych zawiera pojedynczy plik konfiguracji wdrożenia o nazwie Database.sqldeployment. Jeśli otworzysz ten plik w programie Visual Studio 2010, zobaczysz różne dostępne opcje wdrażania:

  • Sortowanie porównania wdrożeń. Pozwala to wybrać, czy używać sortowania bazy danych projektu (sortowania źródłowego ) lub sortowania bazy danych serwera docelowego (sortowania docelowego ). W większości przypadków podczas wdrażania w środowisku projektowym lub testowym należy użyć sortowania źródłowego. Podczas wdrażania w środowisku przejściowym lub produkcyjnym zwykle należy pozostawić sortowanie docelowe bez zmian, aby uniknąć problemów z współdziałaniem.
  • Wdrażanie właściwości bazy danych. Pozwala to wybrać, czy mają być stosowane właściwości bazy danych zgodnie z definicją w pliku Database.sqlsettings . Podczas wdrażania bazy danych po raz pierwszy należy wdrożyć właściwości bazy danych. Jeśli aktualizujesz istniejącą bazę danych, właściwości powinny być już wdrożone i nie należy ich ponownie wdrażać.
  • Zawsze twórz ponownie bazę danych. Pozwala to wybrać, czy należy ponownie utworzyć docelową bazę danych za każdym razem, gdy wdrażasz, czy wprowadzasz przyrostowe zmiany w celu dostosowania docelowej bazy danych do aktualnej wersji schematu. Jeśli ponownie utworzysz bazę danych, utracisz wszystkie dane w istniejącej bazie danych. W związku z tym zwykle należy ustawić wartość false dla wdrożeń w środowiskach przejściowych lub produkcyjnych.
  • Blokuj wdrażanie przyrostowe, jeśli może wystąpić utrata danych. Pozwala to wybrać, czy wdrożenie powinno zatrzymać się, jeśli zmiana schematu bazy danych spowoduje utratę danych. Zazwyczaj ustawia się to na wartość true dla wdrożenia w środowisku produkcyjnym, aby umożliwić interweniowanie i ochronę ważnych danych. Jeśli dla ustawienia Zawsze utwórz ponownie bazę danych ustawiono wartość false, to ustawienie nie będzie miało wpływu.
  • Wykonaj wdrożenie w trybie pojedynczego użytkownika. Nie jest to zwykle problem w środowiskach deweloperskich lub testowych. Jednak zazwyczaj należy ustawić tę wartość na wartość true dla wdrożeń w środowiskach przejściowych lub produkcyjnych. Uniemożliwia to użytkownikom wprowadzanie zmian w bazie danych podczas wdrażania.
  • Tworzenie kopii zapasowej bazy danych przed wdrożeniem. Zazwyczaj ustawiono tę wartość na wartość true podczas wdrażania w środowisku produkcyjnym jako środek ostrożności przed utratą danych. Możesz również ustawić wartość true podczas wdrażania w środowisku przejściowym, jeśli tymczasowa baza danych zawiera wiele danych.
  • Wygeneruj instrukcje DROP dla obiektów znajdujących się w docelowej bazie danych, ale które nie znajdują się w projekcie bazy danych. W większości przypadków jest to integralna i niezbędna część wprowadzania przyrostowych zmian w bazie danych. Jeśli dla ustawienia Zawsze utwórz ponownie bazę danych ustawiono wartość false, to ustawienie nie będzie miało wpływu.
  • Nie używaj instrukcji ALTER ASSEMBLY do aktualizowania typów CLR. To ustawienie określa, jak SQL Server należy zaktualizować typy środowiska uruchomieniowego języka wspólnego (CLR) do nowszych wersji zestawów. Powinno to być ustawione na wartość false w większości scenariuszy.

W tej tabeli przedstawiono typowe ustawienia wdrażania dla różnych środowisk docelowych. Jednak ustawienia mogą się różnić w zależności od dokładnych wymagań.

Deweloper/test Przemieszczanie/integracja Produkcja
Sortowanie porównania wdrożeń Element źródłowy Cel Cel
Wdrażanie właściwości bazy danych Prawda Tylko po raz pierwszy Tylko po raz pierwszy
Zawsze twórz ponownie bazę danych Prawda Fałsz Fałsz
Blokuj wdrażanie przyrostowe, jeśli może wystąpić utrata danych Fałsz Może Prawda
Wykonywanie skryptu wdrażania w trybie pojedynczego użytkownika Fałsz Prawda Prawda
Tworzenie kopii zapasowej bazy danych przed wdrożeniem Fałsz Może Prawda
Generowanie instrukcji DROP dla obiektów znajdujących się w docelowej bazie danych, ale nie w projekcie bazy danych Fałsz Prawda Prawda
Nie używaj instrukcji ALTER ASSEMBLY do aktualizowania typów CLR Fałsz Fałsz Fałsz

Aby obsługiwać wdrażanie projektu bazy danych w wielu miejscach docelowych, należy utworzyć plik konfiguracji wdrożenia dla każdego środowiska docelowego.

Aby utworzyć plik konfiguracji specyficzny dla środowiska

  1. W programie Visual Studio 2010 w oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt bazy danych, a następnie kliknij polecenie Właściwości.

  2. Na stronie właściwości projektu bazy danych na karcie Wdrażanie w wierszu Plik konfiguracji wdrożenia kliknij pozycję Nowy.

    Na stronie właściwości projektu bazy danych na karcie Wdrażanie w wierszu Plik konfiguracji wdrożenia kliknij pozycję Nowy.

  3. W oknie dialogowym Nowy plik konfiguracji wdrożenia nadaj plikowi zrozumiałą nazwę (na przykład TestEnvironment.sqldeployment), a następnie kliknij przycisk Zapisz.

  4. Na stronie [Nazwa pliku].sqldeployment ustaw właściwości wdrożenia zgodnie z wymaganiami środowiska docelowego, a następnie zapisz plik.

    Na stronie Nazwa pliku sqldeployment ustaw właściwości wdrożenia tak, aby odpowiadały wymaganiom środowiska docelowego, a następnie zapisz plik.

  5. Zwróć uwagę, że nowy plik jest dodawany do folderu Properties w projekcie bazy danych.

    Zwróć uwagę, że nowy plik jest dodawany do folderu Properties w projekcie bazy danych.

Określanie pliku konfiguracji wdrożenia w usłudze VSDBCMD

W przypadku korzystania z konfiguracji rozwiązania (takich jak debugowanie i wydanie) w programie Visual Studio 2010 można skojarzyć plik konfiguracji wdrożenia z każdą konfiguracją. Podczas tworzenia określonej konfiguracji proces kompilacji generuje plik manifestu wdrożenia specyficznego dla konfiguracji, który wskazuje plik konfiguracji. Jednak jednym z głównych celów podejścia do wdrażania opisanego w tych samouczkach jest umożliwienie osobom kontrolowania procesu wdrażania bez korzystania z programu Visual Studio 2010 i konfiguracji rozwiązań. W tym podejściu konfiguracja rozwiązania jest taka sama, niezależnie od docelowego środowiska wdrażania. Aby dostosować wdrożenie bazy danych do określonego środowiska docelowego, możesz użyć opcji wiersza polecenia VSDBCMD w celu określenia pliku konfiguracji wdrożenia.

Aby określić plik konfiguracji wdrożenia w usłudze VSDBCMD, użyj przełącznika p:/DeploymentConfigurationFile i podaj pełną ścieżkę do pliku. Spowoduje to zastąpienie pliku konfiguracji wdrożenia, który zostanie zidentyfikowany przez manifest wdrożenia. Na przykład można użyć tego polecenia VSDBCMD, aby wdrożyć bazę danych ContactManager w środowisku testowym:

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

Uwaga

Pamiętaj, że proces kompilacji może zmienić nazwę pliku sqldeployment podczas kopiowania pliku do katalogu wyjściowego.

Jeśli używasz zmiennych poleceń SQL w skryptach SQL przed wdrożeniem lub po wdrożeniu, możesz użyć podobnego podejścia do skojarzenia pliku sqlcmdvars specyficznego dla środowiska z wdrożeniem. W takim przypadku użyjesz przełącznika p:/SqlCommandVariablesFile , aby zidentyfikować plik sqlcmdvars.

Uruchamianie polecenia VSDBCMD z pliku projektu MSBuild

Można wywołać polecenie VSDBCMD z pliku projektu MSBuild przy użyciu zadania Exec w obiekcie docelowym MSBuild. W najprostszej formie wyglądałoby to następująco:

<Target Name="DeployDatabase">     
   <PropertyGroup>      
      <_Cmd>
         Add your VSDBCMD command here
      </_Cmd>
   </PropertyGroup>
   <Exec Command="$(_Cmd)"/> 
 </Target>
  • W praktyce w celu ułatwienia odczytywania i ponownego używania plików projektu należy utworzyć właściwości do przechowywania różnych parametrów wiersza polecenia. Ułatwia to użytkownikom podawanie wartości właściwości w pliku projektu specyficznym dla środowiska lub zastępowanie wartości domyślnych z wiersza polecenia programu MSBuild. Jeśli używasz metody podzielonego pliku projektu opisanego w temacie Understanding the Project File (Opis pliku projektu), należy odpowiednio podzielić instrukcje kompilacji i właściwości między dwoma plikami:
  • Ustawienia specyficzne dla środowiska, takie jak nazwa pliku konfiguracji wdrożenia, parametry połączenia bazy danych i docelowa nazwa bazy danych, powinny znajdować się w pliku projektu specyficznym dla środowiska.
  • Obiekt docelowy programu MSBuild, który uruchamia polecenie VSDBCMD, wraz z dowolnymi uniwersalnymi właściwościami, takimi jak lokalizacja pliku wykonywalnego VSDBCMD, powinien znajdować się w pliku projektu uniwersalnego.

Należy również upewnić się, że przed wywołaniem programu VSDBCMD utworzysz projekt bazy danych, aby plik deploymanifest został utworzony i gotowy do użycia. Pełny przykład tego podejścia można znaleźć w temacie Understanding the Build Process (Opis procesu kompilacji), który przeprowadzi Cię przez pliki projektu w przykładowym rozwiązaniu Contact Manager.

Podsumowanie

W tym temacie opisano sposób dostosowywania właściwości bazy danych do różnych środowisk docelowych podczas wdrażania projektów baz danych przy użyciu programu MSBuild i vsDBCMD. Takie podejście jest przydatne, gdy trzeba wdrożyć projekty bazy danych w ramach większych rozwiązań w skali przedsiębiorstwa. Te rozwiązania są często wdrażane w wielu miejscach docelowych, takich jak środowiska programistyczne lub testowe w trybie piaskownicy, platformy przejściowe lub integracyjne oraz środowiska produkcyjne lub na żywo. Każde z tych środowisk docelowych zwykle wymaga unikatowego zestawu właściwości wdrożenia bazy danych.

Dalsze informacje

Aby uzyskać więcej informacji na temat wdrażania projektów baz danych przy użyciu VSDBCMD.exe, zobacz Wdrażanie projektów bazy danych. Aby uzyskać więcej informacji na temat używania niestandardowych plików projektu MSBuild do kontrolowania procesu wdrażania, zobacz Understanding the Project File and Understanding the Build Process (Opis pliku projektu i Opis procesu kompilacji).

Te artykuły w witrynie MSDN zawierają bardziej ogólne wskazówki dotyczące wdrażania bazy danych: