Przeniesienie bazy danych na inny komputer

Przeniesienie bazy danych na inny komputer
Z5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Piszę program z bazą sql, który ma funkcjonować na innym komputerze. Niestety, próba uruchomienia programu na innym komputerze kończy się niepowodzeniem - pojawia się błąd jak w załączniku.

Dostęp do bazy danych za pomocą:
SqlConnection cnn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Nzoz.mdf; Integrated Security=True;Connect Timeout=30");

Backup bazy "Nzoz" został zrobiony za pomocą SQL Server 2014 Management Studio, a później restore na komputerze docelowym zakończył się powodzeniem.
Z poziomu Management studio baza jest widoczna i serwer się z nią łączy.

Czy mogę prosić o sugestie ?

  • Rejestracja: dni
  • Ostatnio: dni
0

a czy użytkownik z którego konta uruchamiany jest program ma uprawnienia do tej bazy ?

Z5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0

Użytkownik jest tylko jeden, ma uprawnienia administratora do systemu (jak na razie) i w Management Studio do bazy danych

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
0

Ustaw w cs prawdziwą nazwę serwera wraz z instancją, jeśli trzeba, np: "MojServer\SQLEXPRESS"

Z5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0
Juhas napisał(a):

Ustaw w cs prawdziwą nazwę serwera wraz z instancją, jeśli trzeba, np: "MojServer\SQLEXPRESS"

Mam zmienić sqlconnection ?

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
0

Tak. Jak nie wiesz, jak, to stwórz sobie pusty plik tekstowy. Zmień mu rozszerzenie na UDL. Uruchom go podwójnym kliknięciem i skonfiguruj połączenie.

Z5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0
Juhas napisał(a):

Tak. Jak nie wiesz, jak, to stwórz sobie pusty plik tekstowy. Zmień mu rozszerzenie na UDL. Uruchom go podwójnym kliknięciem i skonfiguruj połączenie.

Na początek spróbowałem na orginalnym komputerze. Nowy connection string to:
"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=Uleczka;Initial Catalog=Nzoz;Data Source=ZWOREK"

Po uruchomieniu aplikacji pojawia się błąd : "nieobsługiwane słowo provider.
Po obcięciu początku łańcucha aplikacja uruchamia się, ale baza jest pusta.

Coś namieszałem. Mam wrażenie, że Nzoz.mdf w Management Studio i Nzoz.mdf w aplikacji, to różne bajki :(

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
0

Co znaczy "NZoz.mdf w aplikacji"? Baza MSSQL składa się z dwóch plików. Plik z danymi i plik dziennika. I zazwyczaj MUSI leżeć w odpowiednim miejscu na kompie.

Z5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0
Juhas napisał(a):

Co znaczy "NZoz.mdf w aplikacji"? Baza MSSQL składa się z dwóch plików. Plik z danymi i plik dziennika. I zazwyczaj MUSI leżeć w odpowiednim miejscu na kompie.

Oczywiście, Nzoz.mdf występuje razem z Nzoz_log . Baza znajduje się w katalogu roboczym aplikacji.
Są też wcześniejsze wersje bazy w różnych katalogach (bazę tworzyłem na podstawie DBF z Clipperowskiej aplikacji i dodając nowe tabele do bazy MSSQL pozostawiałem kolejne wersje bazy. Wytworzył się więc bałagan.

Zastanawiam się, czy nie lepiej utworzyć jeszcze raz nową bazę MSSQL o innej nazwie i zacząć wszystko jeszcze raz. Tym bardziej, że na komputerze docelowym zmiana łańcuch połączenia nic nie zmieniła. Tam jest poprzedni błąd, a na komputerze roboczym przy zmienionym łańcuchu baza jest pusta.

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
0

Tak, zrób to od początku, bo wygląda na to, że zrobiłeś sobie burdel, którego sam nie ogarniasz. Bazy danych mają być w folderze z bazami. Nie pamiętam teraz ścieżki, ale na pewno znajdziesz w google. Możesz oczywiście przy pewnych zmianach umieścić sobie bazę gdzie chcesz (nawet na kilku dyskach), ale już zrobiłeś raz bałagan, więc trzymaj się tego, że mają być w domyślnym katalogu z bazami.

SL
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Bydgoszcz
0

Jaki jest cel tej aplikacji ? WEB czy Desktop ?
Bo widzę tu trochę chaosu.

  1. Masz możliwość wgrać Serwer SQL na jeden komputer a nie na komputerze końcowym ?
  2. Znacznie wygodniejsze jest przechowywanie connectionstringa w pliku app.config/web.config jeśli coś się zmienia nie musisz rekompilować aplikacji
  3. LocalDB musi być zainstalowane na komputerze - dlatego jest to raczej narzędzie developerskie niż docelowe rozwiązanie.
  4. Jeśli już na prawdę chcesz trzymać bazę danych w aplikacji to może lepszym pomysłem jest SQLite ?
  5. Uzupełnienie punktu 1. Tak na prawdę to powinieneś mieć webserwis który jako jedyny ma dostęp do bazy danych i odsługiwać połączenie do niego aplikacji desktowej.
Z5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0
Slepiec napisał(a):

Jaki jest cel tej aplikacji ? WEB czy Desktop ?
Bo widzę tu trochę chaosu.

  1. Masz możliwość wgrać Serwer SQL na jeden komputer a nie na komputerze końcowym ?
  2. Znacznie wygodniejsze jest przechowywanie connectionstringa w pliku app.config/web.config jeśli coś się zmienia nie musisz rekompilować aplikacji
  3. LocalDB musi być zainstalowane na komputerze - dlatego jest to raczej narzędzie developerskie niż docelowe rozwiązanie.
  4. Jeśli już na prawdę chcesz trzymać bazę danych w aplikacji to może lepszym pomysłem jest SQLite ?
  5. Uzupełnienie punktu 1. Tak na prawdę to powinieneś mieć webserwis który jako jedyny ma dostęp do bazy danych i odsługiwać połączenie do niego aplikacji desktowej.

Aplikacja jest desktopowa , wiązanie jej z webserwisem nie wydaje mi się dobrym pomysłem.
Tym bardziej, że problem z przeniesieniem aplikacji na inny komputer udało mi się już rozwiązać.
Udało mi się przenieść bazę wykorzystując mechanizm localDB. Dzięki temu mogłem zachować na komputerze roboczym wiele wersji bazy danych

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.