Uruchomienie skryptu SQL z poziomu aplikacji

0

Witam,
Chciałbym z poziomu aplikacji, po uprzednim połączeniu z daną instancją serwera MS SQL, utworzyć nową bazę danych.
Chciałbym wiec zapytać w jaki sposób można to zrobić?
Próbowałem to zrobić w taki sposób:

  1. Dołączyłem do zasobów aplikacji (resources) dwa pliki:
  • plik ze skryptem SQL tworzącym bazę wraz z tabelami i procedurami;
  • plik z rozszerzeniem .bat w którym wywołuję plik ze skryptem SQL poprzez komendę 'sqlcmd'.
  1. Następnie w kodzie aplikacji łączę się z daną instancją MS SQL i "wyrzucam" przygotowane zasoby do katalogu bieżącego aplikacji (Program Files(x86)/moja_aplikacja).
  2. W kodzie aplikacji uruchamiam plik .bat poleceniem:
    System.Diagnostics.Process.Start(@"plik.bat");

Niestety na tym etapie wciąż spotykam się z problemami uprawnień (mam Windows 7) do plików, stąd chciałbym zapytać czy może istnieje jakiś prostszy sposób, np. wywołanie pliku ze skryptem SQL z poziomu aplikacji, aby nie trzeba było przejmować się uprawnieniami?

1

Nie prościej użyć klasy SqlCommand?

0

Zgadzam się, że byłaby to najlepsza metoda z punktu widzenia łatwości wykonania poleceń SQL.
Jednak nie za bardzo sobie wyobrażam wklejać do kodu aplikacji wszystkie procedury, po czym formatować ręcznie każdy wiersz w cudzysłowy, aby kod był mógł byc poprawny...

0

Nie trzeba nic wklejać do kodu aplikacji, można wczytać z pliku.
Nie wiem też o co chodzi z formatowaniem każdego wiersza...

Zrozumiałem, że potrzebujesz za pomocą programu C# utworzyć bazę danych MSSQL, z mojego punktu widzenia, to jedno proste polecenie, które można wywołać przez SqlCommand. Jeśli nie o to Ci chodzi, to wyjaśnij dokładnie, to może się lepsze rozwiązanie wymyśli. :)

0

Przepraszam ale zrozumiałem to tak, że w kodzie aplikacji do commandText musiałbym wstawić cały skrypt, a to wiązałoby się z łączeniem stringów z poszczególnych wierszy skryptu - tam gdzie występuje znak enter.

Czy mógłbym w związku z tym poprosić o przykład, który rozjaśniłby mi sytuację?

1

hmm... jeśli widzisz jakiś problem w łączeniu stringów, to możliwe że cierpisz na jakąś manię prześladowczą.

Już to widzę... telewizor, ewa drzyzga (czy jak ona tam ma), krzesełko, koleś na krzesełku, a na dole podpis "artur17 (17) wie że trzeba połączyć w jeden string, ale nie wie, czy ktoś już kiedyś to robił wcześniej".

Tylko nie próbuj wysyłać "GO". W ogóle zobacz co to jest 'zapytanie', bo możliwe że jednym stringiem wszystkiego nie da się zrobić.

1
artur17 napisał(a)

Przepraszam ale zrozumiałem to tak, że w kodzie aplikacji do commandText musiałbym wstawić cały skrypt, a to wiązałoby się z łączeniem stringów z poszczególnych wierszy skryptu - tam gdzie występuje znak enter.

No prawdopodobnie tak, ale połączenie stringów, to chyba nie jest jakiś problem - można użyć zwykłej konkatenacji +, metody string.Join albo nawet StringBuilder.Append, jeśli chcemy być profesjonalni.

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