Publish aplikacji wraz z bazą danych

0

Witam,
na początku przyznam, że dopiero raczkuje w C#. Stworzyłem sobie aplikacje i teraz chce stworzyć do niej instalkę poprzez opcję publish.
Zastanawia mnie jedna rzecz mianowicie: stworzyłem bazę danych na SQL Serwerze 2012 w narzedziu EMS.
W samej aplikacji łącze się poprzez taką funkcję

         public Funkcje(string instance ,string dbdir)
        {

            polaczenie = new SqlConnection();
            polaczenie.ConnectionString = "Data Source=" + instance + ";" +
                                          "Trusted_Connection=yes;" +
                                          "database=" + dbdir + "; " +
                                          "connection timeout=3";
            polaczenie.Open();

        }

Wywołanie robię poprzez
Funkcje fun = new Funkcje("localhost\\SQLEXPRESS","Bazafinance");

Jak dołączyć bazę do instalki. Rozumiem, że na innym komputerze musi być zainstalowany SQL Serwer 2012. Tylko co, trzeba będzie tam stworzyć taką baze, powiedzmy za pomocą skryptów. ?

Proszę o pomoc i wyrozumiałość

Dodam, że myśle trochę po Delphiowemu. Gdzie na kompie odbiorcy umieszczałem plik bazy, a w aplikacji konfigurowało się samą ścieżke (baza była w Firebirdzie)

0
  1. Co to jest EMS?
  2. Tak, SQL musi być zainstalowany na maszynie, na której chcesz umieścić bazę danych.
  3. connection stringów nie budujemy w aplikacji ręcznie, tylko wczytujemy je z pliku config. Łatwo później taki connection string podmienić.
  4. Bazę możesz publikować za pomocą skryptów, jeśli je sobie wygenerujesz. Możesz też zrobić projekt bazodanowy w Visual Studio, generować z niego paczkę deploymentową, którą zapewne da się podłączyć do instalatora.
0
somekind napisał(a):
  1. Co to jest EMS?
  2. Tak, SQL musi być zainstalowany na maszynie, na której chcesz umieścić bazę danych.
  3. connection stringów nie budujemy w aplikacji ręcznie, tylko wczytujemy je z pliku config. Łatwo później taki connection string podmienić.
  4. Bazę możesz publikować za pomocą skryptów, jeśli je sobie wygenerujesz. Możesz też zrobić projekt bazodanowy w Visual Studio, generować z niego paczkę deploymentową, którą zapewne da się podłączyć do instalatora.
  1. Sql Manager 2010 Lite z firmy EMS Database... itd. (Narzędzie do zarządzania bazą danych)
  2. Tak wiem. Będę to robił później. Na razie wrzucam na sztywno by szybko uruchomić na innym kompie.
  3. Właśnie chciiałbym uniknąć projektu bazodanowego. Wolę stworzyć bazę po za vs i się do niej odnosić

Dążę do tego by na klienckim kompie należało jedynie zainstalować Serwer SQL i uruchomić plik instalacyjny mojej apki.
Może stworzę poboczny program, który doda taką bazę do serwera u klienta... ?

Albo lepiej przy starcie mojej palikacji sprawdzi istenie takiej bazy i w razie jej braku uruchomie jakieś skrypty do jej tworzenia hmmm

W takim razie mam jeszcze pytanie, czy da się połączyć z plikiem bazy .mdf za pomocą connection string, niezależnie gdzie go na dysku umieścimy ?

0

Nie lepiej przy starcie, lepiej już podczas instalacji.

Skoro wolisz się męczyć bez projektu bazodanowego, to chyba możesz z instalatora wywołać po prostu sqlcmd z plikiem skryptu jako parametrem.

0

Z tym projektem bazodanowym to najwyraźniej skopałem sprawę, a teraz mi się spieszy i nie zdążę go przerobić. Puszcze skrypt przy 1 uruchomieniu (1 może być zawsze dłuższe ;) Wydaje mi się, że nie do końca rozumiem ścieżek i serwera MSSQl, ale powalczę

Najprosćiej byłby mi skopiować plik bazy .mdf i łączyć się z nim, ale tak się chyba nie da w SQL Server ;/ hmmm

0

Utworzenie projektu bazodanowego na podstawie istniejącej bazy danych trwa 3 minuty.

Kopiowanie pliku i podłączanie bazy w ten sposób też jest możliwe, ale to akurat najbardziej bezsensowne rozwiązanie.

0

Dzięki za sugestie. Mam jeszcze parę dni, więc spróbuje dołączyć projekt bazy do aplikacji. Mam nadzieje, że z zapytaniami nie będzie problemu, w sensie, że nie będe ich musiał zbyt przerabiać

0
Svenson napisał(a):

Mam nadzieje, że z zapytaniami nie będzie problemu, w sensie, że nie będe ich musiał zbyt przerabiać

Jakimi zapytaniami?

0

Zapytaniami SQL, ale to chyba jest bez zmian, zapewne inaczej obiekt SqlConnection będzie się łączył

0

Dobra , skopiowałem plik bazy do katalogu projektu, Dodałem w Database explorerze nowe połączenie (Data connections) i baza się otworzyła mogę ją tu modyfikować ok.
Teraz mam problem by się z nią połączyć za pomocą SqlConnection. Kopiuje Connection string, ale dalej nie działa hmm. Może jest jakiś inny sposób ustanowienia połączenia np za pomocą wskazania bazy z projektu ?

0

Jaki plik bazy?! Coś takiego nie istnieje.

Nie mam pojęcia, co chcesz osiągnąć, ale na 100% robisz to źle. Projekt bazodanowy to projekt zawierający pliki definiujące strukturę bazy danych (tabele, procedury, funkcje, widoki). Pozwala on np. wygenerować skrypt tworzący bazę, utworzyć ją za pomocą prostego wizarda, albo wygenerować plik dacpac, który następnie można łatwo instalować za pomocą narzędzia SqlPackage.
Dzięki możliwości łatwych wdrożeń, weryfikacji zawartości projektu przed nimi, tworzenie i zarządzanie życiem takiej bazy jest dużo prostsze niż bez tego.

Aplikacja natomiast korzysta z bazy danych wskazanej przez connection string, który powinien znajdować się w pliku konfiguracyjnym. Warstwa dostępu do danych/konkretna technologia powinna odczytywać ten connection string i go używać.

0

Mam gotową utworzoną bazę w zewnętrznym narzędziu do bazy mssql. Teraz chciałbym tę bazę dołączyć do projektu w Visual studio. Baza ta jest zapisywana w pliki o rozszerzeniu? .mdf. Chcę ją tu dodać i później ją zdeployować.

0

Nie, mdf to nie jest plik bazy danych tylko jeden z jej plików.

Nie rozpowszechnia się baz kopiując ogromne pliki, bazy się generuje ze skryptów. Po prostu wygeneruj sobie skrypt tworzący całą bazę, a w instalatorze odpal sqlcmd z tym skryptem jako parametrem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1