Przeniesienie bazy danych na inny komputer

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 ?

0

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

0

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

0

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

0
Juhas napisał(a):

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

Mam zmienić sqlconnection ?

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.

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 :(

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.

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.

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.

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.
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

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