Udostępnij za pośrednictwem


Wdrażanie aplikacji internetowej ASP.NET przy użyciu SQL Server Compact przy użyciu programu Visual Studio lub Visual Web Developer: migrowanie do SQL Server — 10 z 12

Autor : Tom Dykstra

Pobierz projekt startowy

W tej serii samouczków pokazano, jak wdrożyć (opublikować) projekt aplikacji internetowej ASP.NET zawierający bazę danych SQL Server Compact przy użyciu programu Visual Studio 2012 RC lub Visual Studio Express 2012 RC for Web. Możesz również użyć programu Visual Studio 2010, jeśli zainstalujesz aktualizację publikowania w sieci Web. Aby zapoznać się z wprowadzeniem do serii, zobacz pierwszy samouczek z serii.

W samouczku przedstawiającym funkcje wdrażania wprowadzone po wersji RC programu Visual Studio 2012 przedstawiono sposób wdrażania wersji SQL Server innych niż SQL Server Compact oraz pokazano, jak wdrożyć w Azure App Service Web Apps, zobacz temat ASP.NET Web Deployment using Visual Studio (Wdrażanie w internecie przy użyciu programu Visual Studio).

Omówienie

W tym samouczku pokazano, jak przeprowadzić migrację z SQL Server Compact do SQL Server. Jednym z powodów, dla których warto to zrobić, jest skorzystanie z funkcji SQL Server, które SQL Server Compact nie obsługują, takich jak procedury składowane, wyzwalacze, widoki lub replikacja. Aby uzyskać więcej informacji na temat różnic między SQL Server Compact i SQL Server, zobacz samouczek Wdrażanie SQL Server Compact.

SQL Server Express i pełne SQL Server na potrzeby programowania

Po podjęciu decyzji o uaktualnieniu do SQL Server możesz użyć SQL Server lub SQL Server Express w środowiskach deweloperskich i testowych. Oprócz różnic w obsłudze narzędzi i funkcjach aparatu bazy danych istnieją różnice w implementacjach dostawców między SQL Server Compact a innymi wersjami SQL Server. Te różnice mogą spowodować wygenerowanie różnych wyników w tym samym kodzie. W związku z tym jeśli zdecydujesz się zachować SQL Server Compact jako bazę danych deweloperskich, należy dokładnie przetestować lokację w SQL Server lub SQL Server Express w środowisku testowym przed każdym wdrożeniem w środowisku produkcyjnym.

W przeciwieństwie do SQL Server Compact SQL Server Express jest zasadniczo tym samym aparatem bazy danych i używa tego samego dostawcy platformy .NET co pełny SQL Server. Podczas testowania za pomocą SQL Server Express możesz mieć pewność, że uzyskasz takie same wyniki, jak w przypadku SQL Server. Większość tych samych narzędzi bazy danych można używać z SQL Server Express, których można używać z SQL Server (jest to wyjątek godny uwagi SQL Server Profiler) i obsługuje inne funkcje SQL Server, takie jak procedury składowane, widoki, wyzwalacze i replikacja. (Zazwyczaj jednak należy używać pełnych SQL Server w produkcyjnej witrynie internetowej. SQL Server Express można uruchomić w udostępnionym środowisku hostingu, ale nie został zaprojektowany z tego powodu, a wielu dostawców hostingu nie obsługuje tego.

Jeśli używasz programu Visual Studio 2012, zazwyczaj wybierasz SQL Server Express LocalDB dla środowiska programistycznego, ponieważ to właśnie jest instalowane domyślnie w programie Visual Studio. Jednak usługa LocalDB nie działa w usługach IIS, więc w środowisku testowym należy użyć SQL Server lub SQL Server Express.

Łączenie baz danych w porównaniu z przechowywaniem ich oddzielnych

Aplikacja Contoso University ma dwie bazy danych SQL Server Compact: bazę danych członkostwa (aspnet.sdf) i bazę danych aplikacji (School.sdf). Podczas migracji można migrować te bazy danych do dwóch oddzielnych baz danych lub do pojedynczej bazy danych. Możesz je połączyć w celu ułatwienia sprzężenia bazy danych między bazą danych aplikacji a bazą danych członkostwa. Twój plan hostingu może również stanowić powód, aby je połączyć. Na przykład dostawca hostingu może pobierać więcej opłat za wiele baz danych lub nawet nie zezwalać na więcej niż jedną bazę danych. Tak jest w przypadku konta hostingu Cytanium Lite używanego na potrzeby tego samouczka, które umożliwia tylko jedną bazę danych SQL Server.

W tym samouczku przeprowadzisz migrację dwóch baz danych w następujący sposób:

  • Migrowanie do dwóch baz danych LocalDB w środowisku projektowym.
  • Migrowanie do dwóch SQL Server Express baz danych w środowisku testowym.
  • Przeprowadź migrację do jednej połączonej pełnej bazy danych SQL Server w środowisku produkcyjnym.

Przypomnienie: Jeśli zostanie wyświetlony komunikat o błędzie lub coś nie działa w miarę przechodzenia przez samouczek, sprawdź stronę rozwiązywania problemów.

Instalowanie SQL Server Express

SQL Server Express jest domyślnie instalowana automatycznie w programie Visual Studio 2010, ale domyślnie nie jest instalowana w programie Visual Studio 2012. Aby zainstalować SQL Server 2012 Express, kliknij następujący link

Wybierz pozycję ENU/x64/SQLEXPR_x64_ENU.exe lub ENU/x86/SQLEXPR_x86_ENU.exe, a w kreatorze instalacji zaakceptuj ustawienia domyślne. Aby uzyskać więcej informacji na temat opcji instalacji, zobacz Install SQL Server 2012 from the Installation Wizard (Setup)(Instalowanie SQL Server 2012 w Kreatorze instalacji (Instalator).

Tworzenie SQL Server Express baz danych dla środowiska testowego

Następnym krokiem jest utworzenie ASP.NET członkostwa i baz danych szkoły.

W menu Widok wybierz pozycję Eksplorator serwera (Eksplorator bazy danych w programie Visual Web Developer), a następnie kliknij prawym przyciskiem myszy pozycję Dane Connections i wybierz pozycję Utwórz nową bazę danych SQL Server.

Selecting_Create_New_SQL_Server_Database

W oknie dialogowym Tworzenie nowej bazy danych SQL Server wprowadź ciąg ".\SQLExpress" w polu Nazwa serwera i "aspnet-Test" w polu Nowa nazwa bazy danych, a następnie kliknij przycisk OK.

Create_New_SQL_Server_Database_aspnet

Wykonaj tę samą procedurę, aby utworzyć nową bazę danych SQL Server Express School o nazwie "School-Test".

(Dołączasz "Test" do tych nazw baz danych, ponieważ później utworzysz dodatkowe wystąpienie każdej bazy danych dla środowiska deweloperskiego i musisz mieć możliwość odróżnienia dwóch zestawów baz danych).

Eksplorator serwera zawiera teraz dwie nowe bazy danych.

New_databases_in_Server_Explorer

Tworzenie skryptu udzielania dla nowych baz danych

Gdy aplikacja działa w usługach IIS na komputerze deweloperskim, aplikacja uzyskuje dostęp do bazy danych przy użyciu poświadczeń domyślnej puli aplikacji. Jednak domyślnie tożsamość puli aplikacji nie ma uprawnień do otwierania baz danych. Dlatego musisz uruchomić skrypt, aby udzielić tego uprawnienia. W tej sekcji utworzysz skrypt, który zostanie uruchomiony później, aby upewnić się, że aplikacja może otwierać bazy danych po uruchomieniu w usługach IIS.

W folderze SolutionFiles rozwiązania utworzonym w samouczku Wdrażanie w środowisku produkcyjnym utwórz nowy plik SQL o nazwie Grant.sql. Skopiuj następujące polecenia SQL do pliku, a następnie zapisz i zamknij plik:

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

Uwaga

Ten skrypt jest przeznaczony do pracy z SQL Server 2008 i ustawieniami usług IIS w systemie Windows 7, jak określono w tym samouczku. Jeśli używasz innej wersji SQL Server lub systemu Windows, lub jeśli skonfigurowasz usługi IIS na komputerze inaczej, zmiany tego skryptu mogą być wymagane. Aby uzyskać więcej informacji na temat skryptów SQL Server, zobacz SQL Server Books Online.

Uwaga

Uwaga dotycząca zabezpieczeń Ten skrypt daje db_owner uprawnienia do użytkownika, który uzyskuje dostęp do bazy danych w czasie wykonywania, co jest tym, co będziesz mieć w środowisku produkcyjnym. W niektórych scenariuszach możesz określić użytkownika z pełnymi uprawnieniami aktualizacji schematu bazy danych tylko do wdrożenia i określić dla czasu wykonywania inny użytkownik, który ma uprawnienia tylko do odczytu i zapisu danych. Aby uzyskać więcej informacji, zobacz Przeglądanie automatycznych zmian Web.config dla Migracje Code First w temacie Wdrażanie w usługach IIS jako środowisko testowe.

Konfigurowanie wdrożenia bazy danych dla środowiska testowego

Następnie skonfigurujesz program Visual Studio, aby wykonać następujące zadania dla każdej bazy danych:

  • Wygeneruj skrypt SQL, który tworzy strukturę źródłowej bazy danych (tabele, kolumny, ograniczenia itp.) w docelowej bazie danych.
  • Wygeneruj skrypt SQL, który wstawia dane źródłowej bazy danych do tabel w docelowej bazie danych.
  • Uruchom wygenerowane skrypty i utworzony skrypt grantu w docelowej bazie danych.

Otwórz okno Właściwości projektu i wybierz kartę Package/Publish SQL (Pakiet/Publikowanie bazy danych SQL ).

Upewnij się, że na liście rozwijanej Konfiguracja wybrano pozycję Aktywne (wydanie) lub Wydanie.

Kliknij pozycję Włącz tę stronę.

Package_Publish_SQL_tab_Enable_This_page

Karta Package/Publish SQL jest zwykle wyłączona, ponieważ określa starszą metodę wdrażania. W przypadku większości scenariuszy należy skonfigurować wdrożenie bazy danych w kreatorze publikowania w sieci Web . Migracja z SQL Server Compact do SQL Server lub SQL Server Express jest specjalnym przypadkiem, dla którego ta metoda jest dobrym wyborem.

Kliknij pozycję Importuj z Web.config.

Selecting_Import_from_Web.config

Program Visual Studio szuka parametrów połączenia w pliku Web.config, znajduje jeden dla bazy danych członkostwa i jeden dla bazy danych School i dodaje wiersz odpowiadający każdemu parametry połączenia w tabeli Wpisy bazy danych. Znalezione parametry połączenia dotyczą istniejących baz danych SQL Server Compact, a następnym krokiem będzie skonfigurowanie sposobu i miejsca wdrażania tych baz danych.

Ustawienia wdrażania bazy danych są wprowadzane w sekcji Szczegóły wpisu bazy danych poniżej tabeli Wpisy bazy danych . Ustawienia wyświetlane w sekcji Szczegóły wpisu bazy danych odnoszą się do niezależnie od wiersza w tabeli Wpisy bazy danych , jak pokazano na poniższej ilustracji.

Database_Entry_Details_section_of_Package_Publish_SQL_tab

Konfigurowanie ustawień wdrażania dla bazy danych członkostwa

Wybierz wiersz DefaultConnection-Deployment w tabeli Wpisy bazy danych , aby skonfigurować ustawienia, które mają zastosowanie do bazy danych członkostwa.

W obszarze Parametry połączenia docelowej bazy danych wprowadź parametry połączenia wskazującą nową bazę danych członkostwa SQL Server Express. Możesz uzyskać parametry połączenia potrzebne z Poziomu Eksploratora serwera. W Eksploratorze serwera rozwiń węzeł Dane Connections i wybierz bazę danych aspnetTest, a następnie w oknie Właściwości skopiuj wartość Parametry połączenia.

aspnet_connection_string_in_Server_Explorer

Ten sam parametry połączenia jest odtwarzany tutaj:

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

Skopiuj i wklej tę parametry połączenia do parametrów połączenia dla docelowej bazy danych na karcie Package/Publish SQL (Pakiet/Publikowanie bazy danych SQL).

Upewnij się, że wybrano opcję Ściąganie danych i/lub schematu z istniejącej bazy danych . Powoduje to automatyczne generowanie skryptów SQL i uruchamianie ich w docelowej bazie danych.

Parametry połączenia dla źródłowej wartości bazy danych są wyodrębniane z pliku Web.config i wskazuje na bazę danych SQL Server Compact programistycznej. Jest to źródłowa baza danych, która będzie używana do generowania skryptów, które będą uruchamiane później w docelowej bazie danych. Ponieważ chcesz wdrożyć wersję produkcyjną bazy danych, zmień wartość "aspnet-Dev.sdf" na "aspnet-Prod.sdf".

Zmień opcje skryptów bazy danych z Tylko schemat na Schemat i dane, ponieważ chcesz skopiować dane (konta użytkowników i role), a także strukturę bazy danych.

Aby skonfigurować wdrożenie w celu uruchomienia utworzonych wcześniej skryptów udzielania, należy dodać je do sekcji Skrypty bazy danych . Kliknij pozycję Dodaj skrypt, a następnie w oknie dialogowym Dodawanie skryptów SQL przejdź do folderu, w którym zapisano skrypt udzielania (jest to folder zawierający plik rozwiązania). Wybierz plik o nazwie Grant.sql, a następnie kliknij przycisk Otwórz.

Select_File_dialog_box_grant_script

Ustawienia wiersza DefaultConnection-Deployment w pozycjach bazy danych wyglądają teraz jak na poniższej ilustracji:

Database_Entry_Details_for_DefaultConnection_Test

Konfigurowanie ustawień wdrażania dla bazy danych szkoły

Następnie wybierz wiersz SchoolContext-Deployment w tabeli Wpisy bazy danych , aby skonfigurować ustawienia wdrożenia dla bazy danych School.

Możesz użyć tej samej metody, której użyto wcześniej, aby uzyskać parametry połączenia dla nowej bazy danych SQL Server Express. Skopiuj ten parametry połączenia do parametrów połączenia dla docelowej bazy danych na karcie Package/Publish SQL (Publikowanie bazy danych SQL).

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

Upewnij się, że wybrano opcję Ściąganie danych i/lub schematu z istniejącej bazy danych .

Parametry połączenia dla źródłowej bazy danych są wyodrębniane z pliku Web.config i wskazuje bazę danych SQL Server Compact programowania. Zmień wartość "School-Dev.sdf" na "School-Prod.sdf", aby wdrożyć produkcyjną wersję bazy danych. (Nigdy nie utworzono pliku School-Prod.sdf w folderze App_Data, więc później skopiujesz ten plik ze środowiska testowego do folderu App_Data w folderze projektu ContosoUniversity).

Zmień opcje skryptów bazy danych na Schemat i dane.

Chcesz również uruchomić skrypt w celu udzielenia uprawnień do odczytu i zapisu dla tej bazy danych do tożsamości puli aplikacji, dlatego dodaj plik skryptu Grant.sql tak jak w przypadku bazy danych członkostwa.

Po zakończeniu ustawienia wiersza SchoolContext-Deployment w pozycjach bazy danych wyglądają jak na poniższej ilustracji:

Database_Entry_Details_for_SchoolContext_Test

Zapisz zmiany na karcie Package/Publish SQL (Publikowanie pakietu/publikowania bazy danych SQL ).

Skopiuj plik School-Prod.sdf z folderu c:\inetpub\wwwroot\ContosoUniversity\App_Data do folderu App_Data w projekcie ContosoUniversity.

Określanie trybu transakcyjnego dla skryptu udzielania

Proces wdrażania generuje skrypty, które wdrażają schemat i dane bazy danych. Domyślnie te skrypty są uruchamiane w transakcji. Skrypty niestandardowe (takie jak skrypty udzielania) domyślnie nie są uruchamiane w transakcji. Jeśli proces wdrażania miesza tryby transakcji, może wystąpić błąd przekroczenia limitu czasu, gdy skrypty są uruchamiane podczas wdrażania. W tej sekcji edytujesz plik projektu, aby skonfigurować skrypty niestandardowe do uruchamiania w transakcji.

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ContosoUniversity i wybierz pozycję Zwolnij projekt.

Unload_Project_in_Solution_Explorer

Następnie ponownie kliknij prawym przyciskiem myszy projekt i wybierz polecenie Edytuj ContosoUniversity.csproj.

Edit_Project_in_Solution_Explorer

Edytor programu Visual Studio pokazuje zawartość XML pliku projektu. Zwróć uwagę, że istnieje kilka PropertyGroup elementów. (Na obrazie pominięto zawartość PropertyGroup elementów).

Okno edytora plików projektu

Pierwszy, który nie Condition ma atrybutu, dotyczy ustawień, które mają zastosowanie niezależnie od konfiguracji kompilacji. Jeden PropertyGroup element ma zastosowanie tylko do konfiguracji kompilacji debugowania (zwróć uwagę na Condition atrybut ), który ma zastosowanie tylko do konfiguracji kompilacji wydania, a jeden dotyczy tylko konfiguracji kompilacji testowej. PropertyGroup W ramach elementu konfiguracji kompilacji wydania zostanie wyświetlony PublishDatabaseSettings element zawierający ustawienia wprowadzone na karcie Package/Publish SQL (Publikowanie/pakiet).Object Istnieje element odpowiadający każdemu z określonych skryptów udzielania (zwróć uwagę na dwa wystąpienia "Grant.sql"). Domyślnie Transacted atrybut elementu dla każdego skryptu Source przyznawania to False.

Transacted_false

Zmień wartość Transacted atrybutu Source elementu na True.

Transacted_true

Zapisz i zamknij plik projektu, a następnie kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Załaduj ponownie projekt.

Reload_project

Konfigurowanie przekształceń Web.Config dla parametrów połączenia

Parametry połączenia dla nowych baz danych SQL Express wprowadzonych na karcie Package/Publish SQL są używane przez narzędzie Web Deploy tylko do aktualizowania docelowej bazy danych podczas wdrażania. Nadal trzeba skonfigurować Web.config przekształcenia, aby parametry połączenia we wdrożonym pliku Web.config wskazywały nowe bazy danych SQL Server Express. (W przypadku korzystania z karty Package/Publish SQL nie można skonfigurować parametrów połączenia w profilu publikowania).

Otwórz Web.Test.config i zastąp connectionStrings element elementem connectionStrings w poniższym przykładzie. (Pamiętaj, aby skopiować tylko element connectionStrings, a nie otaczający kod, który jest pokazany tutaj w celu zapewnienia kontekstu).

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Ten kod powoduje connectionString zastąpienie atrybutów i providerName każdego add elementu we wdrożonym pliku Web.config . Te parametry połączenia nie są identyczne z parametrami wprowadzonymi na karcie Package/Publish SQL .Te parametry połączenia nie są identyczne. Dodano do niego ustawienie "MultipleActiveResultSets=True", ponieważ jest ono wymagane dla platformy Entity Framework i dostawców uniwersalnych.

Instalowanie SQL Server Compact

Pakiet NuGet SqlServerCompact udostępnia zestawy aparatu bazy danych SQL Server Compact dla aplikacji Contoso University. Ale teraz nie jest to aplikacja, ale narzędzie Web Deploy, które musi mieć możliwość odczytywania SQL Server Compact baz danych, aby tworzyć skrypty do uruchamiania w bazach danych SQL Server. Aby włączyć narzędzie Web Deploy do odczytu SQL Server Compact baz danych, zainstaluj SQL Server Compact na komputerze dewelopera przy użyciu następującego linku: Microsoft SQL Server Compact 4.0 SP1.

Wdrażanie w środowisku testowym

Aby opublikować w środowisku testowym, należy utworzyć profil publikowania skonfigurowany do używania karty Package/Publish SQL do publikowania bazy danych zamiast ustawień bazy danych profilu publikowania.

Najpierw usuń istniejący profil testowy.

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ContosoUniversity, a następnie kliknij pozycję Publikuj.

Wybierz kartę Profil .

Kliknij pozycję Zarządzaj profilami.

Wybierz pozycję Test, kliknij przycisk Usuń, a następnie kliknij przycisk Zamknij.

Zamknij Kreatora publikowania w sieci Web , aby zapisać tę zmianę.

Następnie utwórz nowy profil testowy i użyj go do opublikowania projektu.

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ContosoUniversity, a następnie kliknij pozycję Publikuj.

Wybierz kartę Profil .

Wybierz pozycję <Nowy...> z listy rozwijanej i wprowadź ciąg "Test" jako nazwę profilu.

W polu Adres URL usługi wprowadź wartość localhost.

W polu Witryna/aplikacja wprowadź domyślną witrynę sieci Web/ContosoUniversity.

W polu Docelowy adres URL wprowadź wartość http://localhost/ContosoUniversity/.

Kliknij przycisk Dalej.

Na karcie Ustawienia zostanie wyświetlona ostrzeżenie, że karta Package/Publish SQL została skonfigurowana i daje możliwość ich zastąpienia, klikając pozycję Włącz nowe ulepszenia publikowania bazy danych. W przypadku tego wdrożenia nie chcesz przesłonić ustawień karty Pakiet/Publikowanie bazy danych SQL , więc kliknij przycisk Dalej.

Publish_Web_wizard_Settings_tab_Migrate

Komunikat na karcie Podgląd wskazuje, że nie wybrano żadnych baz danych do opublikowania, ale oznacza to tylko, że publikowanie bazy danych nie jest skonfigurowane w profilu publikowania.

Kliknij przycisk Opublikuj.

Publish_Web_wizard_Preview_tab_Migrate

Program Visual Studio wdraża aplikację i otwiera przeglądarkę na stronie głównej witryny w środowisku testowym. Uruchom stronę Instruktorzy, aby zobaczyć, że są wyświetlane te same dane, które widzieliśmy wcześniej. Uruchom stronę Dodawanie uczniów , dodaj nowego ucznia, a następnie wyświetl nowego ucznia na stronie Uczniowie . Pozwala to zweryfikować, czy bazę danych można zaktualizować. Wybierz stronę Aktualizuj środki (musisz się zalogować), aby sprawdzić, czy baza danych członkostwa została wdrożona i masz do niej dostęp.

Tworzenie bazy danych SQL Server dla środowiska produkcyjnego

Po wdrożeniu w środowisku testowym możesz przystąpić do konfigurowania wdrożenia w środowisku produkcyjnym. Zaczynasz od środowiska testowego, tworząc bazę danych do wdrożenia. Jak pamiętasz z omówienia, plan hostingu Cytanium Lite zezwala tylko na jedną bazę danych SQL Server, więc skonfigurujesz tylko jedną bazę danych, a nie dwie. Wszystkie tabele i dane z członkostwa i bazy danych School SQL Server Compact zostaną wdrożone w jednej SQL Server bazy danych w środowisku produkcyjnym.

Przejdź do panelu sterowania Cytanium pod adresem http://panel.cytanium.com. Przytrzymaj wskaźnik myszy nad bazami danych, a następnie kliknij pozycję SQL Server 2008.

Selecting_Databases_in_Control_Panel

Na stronie SQL Server 2008 kliknij pozycję Utwórz bazę danych.

Selecting_Create_Database

Nadaj bazie danych nazwę "Szkoła", a następnie kliknij przycisk Zapisz. (Strona automatycznie dodaje prefiks "contosou", więc obowiązująca nazwa będzie "contosouSchool".

Naming_the_database

Na tej samej stronie kliknij pozycję Utwórz użytkownika. Na serwerach Cytanium, zamiast korzystać ze zintegrowanych zabezpieczeń systemu Windows i zezwalać tożsamości puli aplikacji na otwieranie bazy danych, utworzysz użytkownika, który ma uprawnienia do otwierania bazy danych. Dodasz poświadczenia użytkownika do parametrów połączenia, które przechodzą do pliku Web.config produkcyjnego. W tym kroku utworzysz te poświadczenia.

Creating_a_database_user

Wypełnij wymagane pola na stronie Właściwości użytkownika SQL :

  • Wprowadź nazwę "ContosoUniversityUser".
  • Wprowadź hasło.
  • Wybierz pozycję contosouSchool jako domyślną bazę danych.
  • Zaznacz pole wyboru contosouSchool .

SQL_User_Properties_page

Konfigurowanie wdrożenia bazy danych dla środowiska produkcyjnego

Teraz możesz skonfigurować ustawienia wdrażania bazy danych na karcie Package/Publish SQL (Pakiet/Publikowanie bazy danych SQL ), tak jak wcześniej w środowisku testowym.

Otwórz okno Właściwości projektu, wybierz kartę Package/Publish SQL (Pakiet/Publikuj SQL) i upewnij się, że na liście rozwijanej Konfiguracja wybrano opcję Aktywne (wydanie) lub Wydanie.

Podczas konfigurowania ustawień wdrażania dla każdej bazy danych kluczową różnicą między tym, co robisz w środowiskach produkcyjnych i testowych, jest sposób konfigurowania parametrów połączenia. W przypadku środowiska testowego wprowadzono różne parametry połączenia docelowej bazy danych, ale w środowisku produkcyjnym docelowa parametry połączenia będzie taka sama dla obu baz danych. Dzieje się tak, ponieważ wdrażasz obie bazy danych w jednej bazie danych w środowisku produkcyjnym.

Konfigurowanie ustawień wdrażania dla bazy danych członkostwa

Aby skonfigurować ustawienia dotyczące bazy danych członkostwa, wybierz wiersz DefaultConnection-Deployment w tabeli Wpisy bazy danych .

W obszarze Parametry połączenia dla docelowej bazy danych wprowadź parametry połączenia wskazującą nowo utworzoną produkcyjną bazę danych SQL Server. Możesz uzyskać parametry połączenia z powitalnej wiadomości e-mail. Odpowiednia część wiadomości e-mail zawiera następujące przykładowe parametry połączenia:

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

Po zastąpieniu trzech zmiennych potrzebny parametry połączenia wygląda następująco:

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

Skopiuj i wklej tę parametry połączenia do parametrów połączenia dla docelowej bazy danych na karcie Package/Publish SQL (Pakiet/Publikowanie bazy danych SQL).

Upewnij się, że opcja Ściąganie danych i/lub schematu z istniejącej bazy danych jest nadal zaznaczona, a opcje skryptów bazy danych są nadal schematem i danymi.

W polu Skrypty bazy danych wyczyść pole wyboru obok skryptu Grant.sql.

Disable_Grant_script

Konfigurowanie ustawień wdrażania dla bazy danych szkoły

Następnie wybierz wiersz SchoolContext-Deployment w tabeli Wpisy bazy danych , aby skonfigurować ustawienia bazy danych szkoły.

Skopiuj te same parametry połączenia do parametrów połączenia dla docelowej bazy danych skopiowane do tego pola dla bazy danych członkostwa.

Upewnij się, że opcja Ściąganie danych i/lub schematu z istniejącej bazy danych jest nadal zaznaczona, a opcje skryptów bazy danych są nadal schematem i danymi.

W polu Skrypty bazy danych wyczyść pole wyboru obok skryptu Grant.sql.

Zapisz zmiany na karcie Package/Publish SQL (Pakiet/Publikowanie kodu SQL ).

Konfigurowanie przekształceń Web.Config dla parametrów połączenia z produkcyjnymi bazami danych

Następnie skonfigurujesz Web.config przekształcenia tak, aby parametry połączenia w wdrożonym pliku Web.config wskazywały nową produkcyjną bazę danych. Parametry połączenia wprowadzone na karcie Package/Publish SQL for Web Deploy to use (Pakiet/Publikowanie programu SQL dla narzędzia Web Deploy) jest taki sam jak ta, której aplikacja musi używać, z wyjątkiem dodawania MultipleResultSets opcji.

Otwórz Web.Production.config i zastąp connectionStrings element element elementem connectionStrings , który wygląda jak w poniższym przykładzie. (Skopiuj tylko connectionStrings element, a nie otaczające tagi, które są udostępniane w celu wyświetlenia kontekstu).

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Czasami widzisz porady, które informują o tym, aby zawsze szyfrować parametry połączenia w pliku Web.config . Może to być odpowiednie w przypadku wdrażania na serwerach w sieci firmowej. Podczas wdrażania w środowisku hostingu współużytkowanego ufasz jednak praktykom zabezpieczeń dostawcy hostingu i nie jest to konieczne ani praktyczne szyfrowanie parametrów połączenia.

Wdrażanie w środowisku produkcyjnym

Teraz możesz przystąpić do wdrażania w środowisku produkcyjnym. Narzędzie Web Deploy odczytuje bazy danych SQL Server Compact w folderze App_Data projektu i ponownie utworzy wszystkie tabele i dane w produkcyjnej bazie danych SQL Server. Aby opublikować przy użyciu ustawień karty Pakiet/Publikowanie w sieci Web , należy utworzyć nowy profil publikowania dla środowiska produkcyjnego.

Najpierw usuń istniejący profil produkcyjny, tak jak wcześniej profil testowy.

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ContosoUniversity, a następnie kliknij pozycję Publikuj.

Wybierz kartę Profil .

Kliknij pozycję Zarządzaj profilami.

Wybierz pozycję Produkcja, kliknij przycisk Usuń, a następnie kliknij przycisk Zamknij.

Zamknij Kreatora publikowania sieci Web , aby zapisać tę zmianę.

Następnie utwórz nowy profil produkcyjny i użyj go do opublikowania projektu.

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt ContosoUniversity, a następnie kliknij pozycję Publikuj.

Wybierz kartę Profil .

Kliknij pozycję Importuj i wybierz pobrany wcześniej plik publishsettings.

Na karcie Połączenie zmień docelowy adres URL na prawidłowy tymczasowy adres URL, który w tym przykładzie to http://contosouniversity.com.vserver01.cytanium.com.

Zmień nazwę profilu na Produkcja. (Wybierz kartę Profil i kliknij pozycję Zarządzaj profilami , aby to zrobić).

Zamknij Kreatora publikowania sieci Web , aby zapisać zmiany.

W rzeczywistej aplikacji, w której baza danych była aktualizowana w środowisku produkcyjnym, przed opublikowaniem wykonasz dwa dodatkowe kroki:

  1. Przekaż app_offline.htm, jak pokazano w samouczku Wdrażanie w środowisku produkcyjnym .
  2. Użyj funkcji Menedżer plików panelu sterowania Cytanium, aby skopiować pliki aspnet-Prod.sdf i School-Prod.sdf z lokacji produkcyjnej do folderu App_Data projektu ContosoUniversity. Dzięki temu dane wdrażane w nowej bazie danych SQL Server zawierają najnowsze aktualizacje wprowadzone przez produkcyjną witrynę internetową.

Na pasku narzędzi Publikuj kliknij pozycję Sieć Web kliknij przycisk Publikuj, upewnij się, że profil produkcyjny jest zaznaczony, a następnie kliknij przycisk Publikuj.

Jeśli przekazano app_offline.htm przed opublikowaniem, musisz użyć narzędzia Menedżer plików w panelu sterowania Cytanium, aby usunąć app_offline.htm przed testem. Można również jednocześnie usunąć pliki sdf z folderu App_Data .

Teraz możesz otworzyć przeglądarkę i przejść do adresu URL witryny publicznej, aby przetestować aplikację tak samo jak po wdrożeniu w środowisku testowym.

Przełączanie do SQL Server Express LocalDB w programie Development

Jak wyjaśniono w artykule Przegląd, ogólnie rzecz biorąc, najlepiej używać tego samego aparatu bazy danych w środowisku deweloperskim, który jest używany w środowisku testowym i produkcyjnym. (Pamiętaj, że zaletą korzystania z SQL Server Express w środowisku deweloperskim jest to, że baza danych będzie działać tak samo w środowiskach deweloperskich, testowych i produkcyjnych). W tej sekcji skonfigurujesz projekt ContosoUniversity, aby używać SQL Server Express LocalDB podczas uruchamiania aplikacji z poziomu programu Visual Studio.

Najprostszym sposobem przeprowadzenia tej migracji jest pozwolić programowi Code First i systemowi członkostwa tworzyć nowe bazy danych deweloperskich. Użycie tej metody do migracji wymaga trzech kroków:

  1. Zmień parametry połączenia, aby określić nowe bazy danych SQL Express LocalDB.
  2. Uruchom narzędzie do administrowania witrynami sieci Web, aby utworzyć użytkownika administratora. Spowoduje to utworzenie bazy danych członkostwa.
  3. Użyj polecenia Migracje Code First update-database, aby utworzyć i zainicjować bazę danych aplikacji.

Aktualizowanie parametrów połączenia w pliku Web.config

Otwórz plik Web.config i zastąp connectionStrings element następującym kodem:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

Tworzenie bazy danych członkostwa

W Eksplorator rozwiązań wybierz projekt ContosoUniversity, a następnie kliknij pozycję ASP.NET Konfiguracja w menu Projekt.

Wybierz kartę Zabezpieczenia.

Kliknij pozycję Utwórz role lub zarządzaj rolami, a następnie utwórz rolę administratora .

Wróć do karty Zabezpieczenia.

Kliknij pozycję Utwórz użytkownika, a następnie zaznacz pole wyboru Administrator i utwórz użytkownika o nazwie admin.

Zamknij narzędzie do administrowania witrynami sieci Web.

Tworzenie bazy danych szkoły

Otwórz okno Konsola Menedżera pakietów.

Z listy rozwijanej Projekt domyślny wybierz projekt ContosoUniversity.DAL.

Wprowadź następujące polecenie:

update-database

Migracje Code First stosuje migrację początkową, która tworzy bazę danych, a następnie stosuje migrację AddBirthDate, a następnie uruchamia metodę Seed.

Uruchom witrynę, naciskając klawisz Control-F5. Podobnie jak w przypadku środowisk testowych i produkcyjnych, uruchom stronę Dodawanie uczniów , dodaj nowego ucznia, a następnie wyświetl nowego ucznia na stronie Uczniowie . Sprawdza to, czy baza danych szkoły została utworzona i zainicjowana oraz czy masz do niego dostęp do odczytu i zapisu.

Wybierz stronę Aktualizuj środki i zaloguj się, aby sprawdzić, czy baza danych członkostwa została wdrożona i czy masz do niej dostęp. Jeśli nie przeprowadzono migracji kont użytkowników, utwórz konto administratora, a następnie wybierz stronę Aktualizuj środki , aby sprawdzić, czy działa.

Czyszczenie plików SQL Server Compact

Nie potrzebujesz już plików i pakietów NuGet, które zostały dołączone do obsługi SQL Server Compact. Jeśli chcesz (ten krok nie jest wymagany), możesz wyczyścić niepotrzebne pliki i odwołania.

W Eksplorator rozwiązań usuń pliki sdf z folderu App_Data oraz foldery amd64 i x86 z folderu bin.

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy rozwiązanie (nie jeden z projektów), a następnie kliknij polecenie Zarządzaj pakietami NuGet dla rozwiązania.

W okienku po lewej stronie okna dialogowego Zarządzanie pakietami NuGet wybierz pozycję Zainstalowane pakiety.

Wybierz pakiet EntityFramework.SqlServerCompact i kliknij pozycję Zarządzaj.

W oknie dialogowym Wybieranie projektów obie projekty są zaznaczone. Aby odinstalować pakiet w obu projektach, wyczyść oba pola wyboru, a następnie kliknij przycisk OK.

W oknie dialogowym z pytaniem, czy chcesz odinstalować pakiety zależne, kliknij przycisk Nie. Jednym z nich jest pakiet Entity Framework, który należy zachować.

Wykonaj tę samą procedurę, aby odinstalować pakiet SqlServerCompact . (Pakiety muszą zostać odinstalowane w tej kolejności, ponieważ pakiet EntityFramework.SqlServerCompact zależy od pakietu SqlServerCompact ).

Pomyślnie przeprowadzono migrację do SQL Server Express i pełnego SQL Server. W następnym samouczku wprowadzisz kolejną zmianę bazy danych i zobaczysz, jak wdrożyć zmiany bazy danych, gdy testowe i produkcyjne bazy danych używają SQL Server Express i pełnych SQL Server.