Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[c#] Otwieranie skryptu do tworzenia pustej bazy SQL

Rafal.J.645 01 Cze 2012 19:49 2879 8
  • #1 01 Cze 2012 19:49
    Rafal.J.645
    Poziom 11  

    Witam.

    Mam problem z otworzeniem skryptu do tworzenia bazy danych.
    Było to poruszany w temacie, który założyłem, ale za wcześnie zaznaczyłem,
    że problem rozwiązany (https://www.elektroda.pl/rtvforum/topic2292052.html).

    markonedj napisał:
    1. Przygotowujesz skrypt bazy danych (jak opisałem wyżej) zapisujesz go gdzieś na dysku np. D:\Sql\Baza_script.sql.
    2. Otwierasz VS i dodajesz ten plik do solucji.
    3. Potem tworzysz sobie dwie metody, będą one uruchamiane przy starcie programu i jedna będzie sprawdzać czy baza jest już na serwerze, a druga będzie odpowiedzialna za utworzenie skryptu jeśli bazy tam nie ma np.
    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    O ile metoda sprawdzająca czy baza jest na serwerze jest banalna o tyle metoda uruchomiając cały skrypt jest już bardziej skomplikowania ponieważ nie można sobie odczytać skryptu wygenerowanego przez sql i odpalić za pomocą metody ExecuteNonQuery klasy SqlCommand, gdyż, program zwróci wyjątek że nie rozpoznaje słówka GO które rozdziela batche sql, więc aby to obejść do projektu musisz dodać 3 dll-ki:
    - Microsoft.SqlServer.ConnectionInfo
    - Microsoft.SqlServer.Management.Sdk.Sfc
    - Microsoft.SqlServer.Smo
    Znajdziesz je w katalogu C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies.
    Następnie usingi:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod
     

    i właściwa metoda wykonująca skrypt:
    Kod: csharp
    Zaloguj się, aby zobaczyć kod
     
    No i tyle, baza zostanie utworzona na serwerze.


    Zrobiłem tak jak tutaj markonedj napisał, tylko u mnie baza ma być tworzona
    po kliknięciu przycisku.
    Wyskakuje taki błąd:

    Cytat:
    Zestaw w trybie mieszanym utworzono przy użyciu wersji v2.0.50727 środowiska wykonawczego i nie można załadować go w środowisku wykonawczym 4.0 bez dodatkowych informacji o konfiguracji.


    Pomoże mi ktoś i podpowie, co powinienem zrobić, żeby błąd nie wyskakiwał
    i program otwierał skrypt?

    Pozdrawiam.

    0 8
  • #2 01 Cze 2012 19:58
    mickpr
    Poziom 39  

    Masz część programu przygotowaną pod inną wersją .NET
    Masz program z .NET2. a uruchamiasz w środowisku z .NET 4
    Napisz wszystko w jednej wersji.
    Ewentualnie - jak jest napisane - dodatkowe konfiguracje.

    Ech - te niezgodności .NET.
    Dlaczego w Linuksie zrobiono (dawno temu) porządek z bibliotekami, a największa firma informatyczna świata - wciąż się z tym boryka?

    0
  • #3 01 Cze 2012 20:09
    Rafal.J.645
    Poziom 11  

    mickpr napisał:
    Masz program z .NET2. a uruchamiasz w środowisku z .NET 4
    Napisz wszystko w jednej wersji.

    Mógłbyś sprecyzować o co dokładnie chodzi, bo nie bardzo rozumiem?

    0
  • #5 01 Cze 2012 20:39
    Rafal.J.645
    Poziom 11  

    Ok, popróbowałem trochę i jeśli do pliku app.config dopiszę taki kod:

    Kod: csharp
    Zaloguj się, aby zobaczyć kod


    to podczas próby uruchomienia skryptu wywala taki błąd:

    Cytat:
    An exception occurred while executing a Transact-SQL statement or batch.


    Co zrobić, żeby działało to ok, bo nie bardzo rozumiem treść tego błędu.

    0
  • #6 01 Cze 2012 21:07
    mickpr
    Poziom 39  

    app.config to rozwiązanie moim zdaniem kiepskie
    Stwórz projekt od nowa używając jednej wersji środowiska .NET.
    2.0, albo 4.0

    0
  • #7 02 Cze 2012 00:06
    Rafal.J.645
    Poziom 11  

    A jak tworzę projekt to gdzie się ustawia wersje framework'a?
    Poza tym mam zainstalowaną tylko 4.0.

    0
  • #8 02 Cze 2012 00:13
    mickpr
    Poziom 39  

    Na aplikacji (nie solucji) w oknie Solution Explorer prawym klawiszem i wybierz Properties
    Potem zakładka - Application - i "combobox" o nazwie "Target Framework".

    0
  • #9 02 Cze 2012 10:10
    Rafal.J.645
    Poziom 11  

    Jest tam ustawione ".NET Framework 4 Client Profile".
    A gdzie jest to drugie ustawieni z którym musi się to zgadzać?

    0