Aplikacja desktopowa c# i brak polączenia z bazą SQL

0

Witam,

Napisałam aplikację w WindowsForms, która zawiera kilka modułów między innymi formularz logowania, rejestrację, profil użytkownika.
Stworzyłam bazę danych w MS SQL 2008 R2 Express, którą następnie umieściłam na serwerze. Pisząc aplikację korzystałam z Data.SqlClient.
Na moim komputerze wszystko działa bez zarzutu, łączy się z bazą, wpisuję rekordy. Wygenerowałam plik .exe i wysłałam do znajomego. Aplikacja nie działa. Błąd, który się pojawia zamieszczam poniżej. Czy to oznacza, że osoby chcąca korzystać z tej aplikacji muszą mieć u siebie zainstalowanego ms sql ?

Dziękuje za odpowiedź.

0

Miałem to samo z MySQL, ostatecznie chodziło o uprawnienia dostępu do bazy. Zmieniłem z user@localhost na user@% i poszło ;)

0

Naprawdę, zdjęcie robiłaś telefonem? ;-)

OK - napisałałaś "Stworzyłam bazę danych w MS SQL 2008 R2 Express, którą następnie umieściłam na serwerze."
Ale czy do tego serwera ma dostęp komputer Twojego znajomego?
Nie ma? To co się dziwsz, że nie działa...

Drugie pytanie "Czy to oznacza, że osoby chcąca korzystać z tej aplikacji muszą mieć u siebie zainstalowanego ms sql"
Nie, nie muszą, ale ich komputery muszą mieć dostęp do SQL Servera z bazą danych, z której korzysta Twoja aplikacja - to chyba logiczne, prawda? Twoja aplikacja wymaga bazy danych i to jest konieczne.
Możesz instalować SQL Servera u znajomego, ale możesz wykorzystać MS LocalDB - to taka uproszczona jednostanowiskowa wersja MS SQL.

Trzecia sprawa - pokaż Conenction String, łączysz się za pomocą protokołu named pipes, a (raczej) powinnaś za pomocą TCP/IP.

PS. To jest absolutna podstawa, jakim cudem udało Ci się apisać program z bazą danych, jeżeli tego nie wiesz?
Po namyśle, jednak nie chcę wiedzieć jakim cudem...

0
pistacja napisał(a):

To chyba nie to,bo baza nie jest podłączona lokalnie, tylko jest na serwerze i u mnie działa.

Jasne, a do tego serwera znajomy ma dostęp?

Może zwiększyć limit czasu połącznia ?

Bez sensu - zacznij czytać komunikaty błędów. Ze zrozumieniem polecam....

0

connectionstring:

 public SqlConnection conn = new SqlConnection("workstation id=baza.mssql.somee.com;packet size=4096;user id=pistacja;pwd=******;data source=baza.mssql.somee.com;persist security info=False;initial catalog=baza");
                                                     
0

OK, chodzi o wartość Data Source
Wpisałaś tak: data source=baza.mssql.somee.com
I SQLConnection stwierdziło, że do serwera o nazwie baza.mssql.somee.com będzie łączył się za pomocą protokołu NamedPipes.
Zamiast baza.mssql.somee.com wpisz adres IP lub domenę, ale taką aby komputer znajomego widzał ten komputer.
Jeżeli ten serwer posiada instancję nie domyślna, muszisz podać jej nazwę.
Zobacz np. tu:
http://www.connectionstrings.com/all-sql-server-connection-string-keywords/

MSSQL powinien być skonfigurowany tak, aby umożliwiwać obsługę połączeń zdalnych i wspierać dowpiedni protokół - np. TCP/IP.
Czy to na pewno jest spełnione?
Kolejna sprawa - komunikacja z MSSQL na TCP/IP korzysta domyślnie z portu 1433, Twój znajomy musi mieć możliwość nawiązywania połączenia na tym porcie. Oczywiście tylko pod warunkiem, że blokuje połączenia wychodzące, ale tego się zazwyczaj nie robi...

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