Migracja z SQL Server 2005 Express do SQL Server 2008 na Webio.pl

Ostatnio miałem okazję pracować nad 3 projektami w ASP.NET. Niestety do tego czasu miałem strasznie długą przerwę z programowaniem aplikacji web’owych, co opłaciłem stratą czasu na przypominaniu sobie, o co w tym chodziło.

Na szczęście sukces został osiągnięty za każdym razem.

RajDzieci_medium Jednym z projektów, nad którymi pracowałem było zrobienie witryny sklepu internetowego RajDzieci.pl. Wykorzystałem do tego stary projekt, który pisałem podczas nauki ASP.NET 2.0. Zrobiłem wówczas bardzo prostą aplikację tego typu, która opierała się na bazie danych Microsoft SQL 2005 Express. Teraz rozwinąłem ten prototyp i powstał normalny sklep. Na hosting został wybrany serwis Webio.pl.

 

WebioBanner Webio.pl obsługuje bazy MS SQL 2005, MS SQL 2008 i MySQL 5. MySQL jest po za obszarem moich zainteresowań. SQL 2005 nie ma już panelu administratora na Webio (sam serwer jest tylko dla tych, którzy jeszcze nie zmigrowali się do 2008). I na początku wydawało mi się, że wszystko pójdzie gładko przeniesieniem mojej bazy express, ale się trochę naciąłem.

 

1. Tworzymy nową bazę na Webio.pl

  • Zaloguj się na Webio.pl
  • Przejdź do SQL Server 2008
  • Utwórz nową bazę danych (Create Database)
  • Podaj jej nazwę (pełna nazwa bazy jest poprzedzona nazwą konta na Webio) i Save

 post02 post03a post04 post05

2. Tworzenie użytkownika

  • Wróć do panelu i w SQL Server 2008 wybierz Create User
  • Podaj nazwę użytkownika (również będzie miała przedrostek w postaci nazwy konta na Webio)
  • Podaj tajne hasło
  • Wybierz bazę danych i pomyślną bazę danych (bazę przed chwilą utworzoną przez panel Webio)

post06 post07

3. Utworzenie ASP.NET Membership Providera

  • Na lokalnym komputerze przejdź do katalogu z Frameworkiem (standartowo: C:\Windows\Microsoft.NET\Framework\v2.0.50727)
  • Uruchom aspnet_regsql.exe
  • W odpalonym wizardzie wybieramy opcję “Configure SQL Server for application services”
  • Podaj nazwę serwera Webio (dokładny adres i port znajduje się w mailu wysłanym przez Webio podczas rejestracji)
  • Rodzaj autentykacji SQL Server, podaj nazwę użytkownika SQL i hasło (utworzony w kroku 2)
  • Podaj nazwę bazy (utworzona w kroku 1). Tutaj w moim przypadku był pierwszy problem. Otóż lista się nie chciała załadować. Ale okazało się, że można ręcznie wpisać nazwę bazy.
  • Po wypełnieniu formularza daj Next, Next i Finish.
  • aspnet_regsql_00 aspnet_regsql_01 aspnet_regsql_02 aspnet_regsql_03 aspnet_regsql_04 aspnet_regsql_05

    4. Test w SQL Server Management Studio

    • Jeśli masz SQL Server Management Studio to możesz teraz sprawdzić czy to co zrobiłeś do tej pory dało jakiś wynik
    • Zalogu się do bazy Webio (connection string jest dostępny w mailu wysłanym podczas rejestracji)
    • Możeliwe, że po zalogowaniu się nie będziesz widział żadnej bazy danych w oknie Object Browser. To był drugi problem, jaki mnie przystopował. Okazało się, że jest to pospolity problem. Wystarczy, że w oknie Object Explorer wybierzesz Databases, następnie klawisz F7. Pokawi się okno Object Explorer Details. Następnie prawym klawiszen naciśnij na nagłówek kolumny Name i wyłącz opcję Collation.
    • Teraz wróć do Object Explorer’a i zrób Refresh. Powinny pojawić się wszystkie bazy danych, w tym i Twoja.
    • Gdy rozwiniesz obiekty twojej bazy, zobaczysz, że w Tables są tablice aspnet_, które zostały wygenerowane automatycznie przez kreatora aspnet_regsql.exe

    collation_01 collation_02 collation_03 aspnet_regsql_06

    5. Export tablic z bazy Express

    • Uruchom Visual Studio
    • Otwórz swój projekt witryny
    • W oknie Server Explorer kliknij na bazę Express prawym klawiszem (czyli bazę w pliku mdf)
    • Z dostępnego menu kontekstowego wybierz Publish to Provider
    • Uruchomi się kreator exportu
    • Okno Select Database: wybierz twoją bazę Express (plik mdf), wyłącz opcję Script all ocjects
    • Okno Choose Object Types: w zależności jakie obiekty występują w Twojej bazie, różne pozycje będą wyświetlane. Kreator skanuje Twoją bazę, i podpowiada tylko takie typy, które istnieją. W moim przypadku interesowały mnie tabele i procedury
    • Okno Stored Procedures: Wybierz tylko Twoje procedury. Nie wybieraj proceduj Membership Providera, ponieważ w docelowej bazie SQL Server 2008 już utworzyłeś Membership Providera (w kroku 3)
    • Okno Tables: Podobnie jak w przypadku procedur, wybierz tylko Twoje tabele, pozostałe z Membership Providera pomiń. One również są utworzone i czekają w docelowej bazie
    • Okno Select an Output Location: wybierz miejsce gdzie chcesz wykonać export. Ja wybrałem, że ma powstać plik ze skryptem. Opcji Publish to shared hosting provider nie testowałem.
    • Następne okno to już tylko podsumowania oraz wynik całego procesu eksportu.

       publish_to_provider_01 publish_to_provider_02publish_to_provider_03publish_to_provider_04 publish_to_provider_05

    publish_to_provider_06 publish_to_provider_07 publish_to_provider_08 publish_to_provider_09 publish_to_provider_10 publish_to_provider_11 

    6. Import w docelowej bazie SQL Server 2008

    • Mając przygotowany plik ze skryptem, uruchom SQL Server Management Studio
    • Otwórz plik ze skryptem i wykonaj go (Execute/F8)
    • Odśwież obiekty na drzewie Object Explorer, powinieneś zobaczyć Twoje tabele
    • Jeśli w tabelach były jakieś dane, to sprawdz od razu czy również zostały zaimportowane.

    publish_to_provider_12

    Gotowe.

    Co ciekawe, wykonanie Publish to Provider exportuje zarówno schemat jak i dane.

    Cała operacja udała mi się dzięki Pomocy On-Line Webio, za co w tym miejscu ponownie dziękuję.

    Advertisements