Wpis z mikrobloga

Napisałem aplikację w #csharp w #visualstudio, która ma baze .mdf na #sqlserver. Aplikacja łączy się z bazą tylko na moim komputerze gdzie piszę tą aplikację`. Próbowałem już różnych wersji SQLServer; łączyłem z bazą po sieci, lokalnie; wyłączałem antywirusy, firewalle; sprawdzałem uprawnienia do folderów. Nie mam pomysłów już co to może być, ani jak znaleźć przyczynę. Jakieś pomysły?
#pytaniedoeksperta #programowanie
  • 15
  • Odpowiedz
@kiboq: Ale w czym jest problem o nie rozumiem? Masz lokalnie serwer i MDFa, więc nie dziw się, że innym komputerze będziesz miał bład połączenia z bazą. Proponuje albo: udostępnić serwer jak i bazę po sieci np lan, albo wykupić sobie jakiś serwer DB (np azure jest darmowy przez miesiąc, a potem po testach możesz zrezygnować z subskrypcji), albo przerzucić się na bibliotekę Sql Server CE, która nie wymaga oddzielnego serwera.
  • Odpowiedz
@kiboq: Ale co nie działa? Jaki błąd? Co Ci kompilator wypluwa? Jaką strategie przyjmujesz dla kontekstu (CreateIfNotExists(), DropCreateDatabaseAlways() czy inną)

Wincyj konkretów!
  • Odpowiedz
@budyn: @Nartenlener: Hmmm, spróbuję inaczej. Komputer, na którym piszę aplikację łączy się bez problemu z bazą na dysku C:\.

Connection string w aplikacji wpisany jest na sztywno i jest to:

@"Data Source=(LocalDB)\v11.0;AttachDbFilename=c:\Folder\Baza.mdf;Integrated Security=True;Connect Timeout=30";

Na innych komputerach (nawet bez firewalla i antywirusa) program nie chce się połączyć. inb4: Tak, na tych komputerach stworzyłem c:\Folder\baza.mdf.

Na moim komputerze jest zainstalowany sqlserver 2014 i 2008r. Na innych komputerach próbowałem na obu.

Inne
  • Odpowiedz
@kiboq: Chcesz mi powiedzieć, że sam tworzysz plik baza.mdf na innych komputerach? Tak to nie działa :)

Proponuje skorzystać ze strategii CreateIfNotExists() przy inicjalizowaniu Contextu. W jaki sposób tworzysz bazę? Code-First?, Model-First, DB-First?

Po za tym nie zdziwiłbym się gdyby ta aplikacja nie miała dostępu do katalogu, o którym piszesz i wywalała błąd. Jeśli nie używasz NLoga to ciężko będzie zdiagnozować w 100% bez debugu
  • Odpowiedz
@Nartenlener: Tworzę w sensie, że katalog, bazę kopiuję ;) (zawsze działało więc to chyba nie o to chodzi).
Ale mam coś ciekawego. Wklejam poniżej:

//wklejona treść z komuniatu:
Szczegółowe informacje na temat wywoływania debugowania w trybie JIT (just in time)
zamiast tego okna dialogowego znajdują się na końcu tego komunikatu.

************ Tekst wyjątku ************
System.Data.SqlClient.SqlException (0x80131904): Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z serwerem programu SQL Server.
kiboq - @Nartenlener: Tworzę w sensie, że katalog, bazę kopiuję ;) (zawsze działało w...

źródło: comment_QNqBRdBO07LF4XcPNhwJjMqfOU8id97l.jpg

Pobierz
  • Odpowiedz
@kiboq: Ale ogólnie prawidłowo to powinieneś stworzyć/attachowac mdf w bazie na jednym kompie (serwerze) i łączyć się do niego przez ip i nazwę bazy danych. Żadnych plików na innych komputerach nie potrzeba ani SQL Servera.

No i przestań używać windows authentication.
  • Odpowiedz
@kiboq: Jeszcze jedno znalazłem. Na lokalnym kompie masz LocalDb (specjalny feature SQL Servera) zainstalowane pewnie razem z Visual Studio albo instalacją SQL. Zgaduję, że z Visualem. Na drugim kompie nie masz Visuala, dlatego Ci nie chodzi. Ogólnie LocalDb niekoniecznie jest instalowane z SQL Serverem. Najlepiej z tego w ogóle zrezygnuj.

https://www.asp.net/mvc/overview/getting-started/introduction/creating-a-connection-string
https://www.microsoft.com/en-us/download/details.aspx?id=29062
  • Odpowiedz
@kiboq: Obstawiam to co @budyn, na kompie na którym próbujesz odpalić aplikację nie masz LocalDb. Jeśli instalowałeś na pozostałych kompach SQL Server to w connectionString ustaw źródło danych na ten zainstalowany serwer.
  • Odpowiedz
@budyn: @EmTeKa: Eh, zapomniałem napisać. Dzięki! Udało się. Wywaliłem sqlServ z końcówek, zainstalowałem tylko na serwerze, przypiąłem bazę przez managera i śmiga. Wcześniej jak próbowałem się połączyć z taką podpiętą bazą to wychodził błąd bo wpisywałem nazwę jako: nazwakomputera/sqlexpress, a ma być sama nazwa komputera. Aha i zmieniłem win auth na logowanie hasłem. Pozdrawiam :)
  • Odpowiedz