ConnectionString - uniwersalność jak zrobić

ConnectionString - uniwersalność jak zrobić
0

Hej!
Mam aplikację, która łączy się z lokalną bazą danych i na jej podstawie dokonuje operacji. Wszystko ładnie działa na obecnym komputerze. Jednak po wrzuceniu na drugi, dodaniu bazy w sql servere, wywala błąd : Nie odnaleziono serwera.
Niestety localhost nie załatwia sprawy w moim ConnectionString:

Kopiuj
SqlConnection conn= new SqlConnection(@"Data Source=localhost;Initial Catalog=moja_baza;Integrated Security=True"); 

Gdy próbuje wpisać zamiast localhost na obecnym komputerze nazwa_komputera/nazwa_instancji to otrzymuje dokładnie taki sam błąd.

Co robię źle? Czy da się wykryć za pomocą C# nazwę serwera i instancji, tak żeby program sam ją pobierał i później wczytał do ConnectionStringa?

somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Wrocław
0

Trzymaj connection stringi w configu aplikacji i tam podmieniaj ich wartość w zależności od komputera.

0

A czy jest możliwe i miałoby sens stworzenie listy z instancjami, aby użytkownik wybierał tą, która posiada tą bazę? Jeśli miałbym zrobić to w konfiguracji to jest możliwość wyciągnięcia tego z systemu w miarę prosty sposób?

ZA
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 lat
  • Postów:55
0

A czy w wartości Data Source w twoim connection stringu nie powinno być czegoś takiego:
(localhost)\instancja serwera ? np.:
SqlConnection conn= new SqlConnection(@"Data Source=(localhost)\SQLEXPRESS;Initial Catalog=moja_baza;Integrated Security=True");

Poza tym wydaje mi się, że tworzenie programu, który łączy się z lokalną bazą danych i działa na wielu komputerach raczej mija się z celem. Bardziej sensowny byłby program łączący się ze zdalną bazą i działający na wielu maszynach.

edytowany 1x, ostatnio: zajebioza
0

Niestety moja wiedza (raczej jej brak) zdecydowały aby zrobić najpierw program łączący się z lokalną bazą. Aplikacja generuje raporty i wyświetla różne wyniki i to wszystko. Jak wstawiłem .//MSSQLSERVER w ConnectionString to niestety już nie chce działać, jak podaję samo localhost lub nazwę serwera "Dell-I" to wtedy działa.

Zdalne postawienie bazy rozumiem, że wymaga wykupienie jakiegoś miejsca na jakimś serwerze? Baza ma parę mb, więc nie jest to jakaś krowa (10-20 tabel około).

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Jak chcesz za darmo to trzeba mieć serwer (fizyczny, lub wirtualka, zależy od wymogów), zainstalować na nim system i bazę danych, skonfigurować oba. Ustawić odpowiedni connectionstring w aplikacji.

Nie wiem co to za typ aplikacji, czy web-owa czy desktop-owa ? W przypadku web-owej możesz wykupić jakiś hosting z ASP.NET lub skorzystać z darmowych (chyba jakieś tam są, ale nie spodziewaj się rewelacji). W przypadku desktop-owej raczej zostaje Ci wersja z instalacją na serwerze w lokalnej sieci.

0

Jest to zwykła apka WinForms. Chciałbym jak najbardziej to uprościć, bo odbiorca tej aplikacji musi wtedy sam to konfigurować. Może poszukam jakiegoś darmowego serwera i spróbuje to zrobić. Bo postawienie własnego na wirtualce nie rozwiązuje problemu dostępu- wyłączonym komp i kaput.

Chciałbym znaleźć darmowy bo potrzebuję tej aplikacji jako dodatek do prezentacji i serwer na 3 mieś byłby wystarczający.

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Skoro potrzebujesz tylko na prezentację to możesz postawić na lokalnej bazie danych, czy nie ?

Odnośnie uproszczenia - może rozwiązaniem byłoby stworzenie dialogu do wprowadzenia danych połączenia, tutaj wprowadzałoby się ustawienia i te byłyby zapisywane do pliku/rejestru (nie zapomnij szyfrować haseł), następnie podczas włączania appki plik/rejestr byłby odczytywany, wyświetlałoby się okienko do wyboru konfiguracji, użytkownik wybiera połączenie, po wybraniu konkretnego połączenia budowany byłby connectionstring do bazy danych i wykonywane połączenie.

0

Zastanawiam się czy na pewno to dobrze rozumiem. Czy w DataSource powinienem podawać tylko nazwę serwera czy nazwę instancji też?
Zapytanie

Kopiuj
SELECT @@SERVERNAME, @@SERVICENAME

zwraca mi
Dell-I (nazwa komputera), MSSQLSERVER

jak wpisuję W

Kopiuj
 Data Source="Dell-I\\MSSQLSERVER"

to nie działa, a jak samo Dell-I to działa.

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0
0

Może być lokalna baza. Od użytkownika wystarczyłoby abym poprosił dane logowania plus nazwę serwera/instancji i umożliwił, np. zapisywanie tych ustawień tak jak wspomniałeś do rejestru. Dodałbym po prostu formatkę, wyświetlaną przed wykonaniem zapytań.

Co do connection stringa, dalej nie jestem w stanie zrozumieć dlaczego sposób localhost, Dell-I działa, a jak dodam nazwę instancji MSSQLSERVER to już nie.

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

Podstaw swoje dane i sprawdź czy działa.
Sprawdź za pomocą SSMS czy na pewno taką masz nazwę instancji.

I wrzuć jeszcze komunikat błędu.

edytowany 1x, ostatnio: michu_cc
0

Łącze się za pomocą autentykacji windows, a nie SQL.

mój ConnectionString:

Kopiuj
SqlConnection con = new SqlConnection("Data Source=Dell-I//MSSQLSERVER;Initial Catalog=NORTHWIND;Integrated Security=True"); 

to samo dla:

Kopiuj
SqlConnection con = new SqlConnection("Data Source=localhost//MSSQLSERVER;Initial Catalog=NORTHWIND;Integrated Security=True"); 

Błąd:

Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z serwerem programu SQL Server. Nie można odnaleźć serwera lub jest on niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy konfiguracja serwera programu SQL Server zezwala na połączenia zdalne. (provider: Named Pipes Provider, error: 40 - Nie można otworzyć połączenia z programem SQL Server)

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

OK, sprawdź:

  1. Czy baza danych jest uruchomiona, czy jesteś w stanie podłączyć się za pomocą SQL Server Management Studio,
  2. Czy firewall nie blokuje Ci portu 1433,
  3. Wejdź w konfigurację MSSQL-a i sprawdź czy masz włączony TCP/IP i czy jest ustawiony dla niego port 1433,
  4. Sprawdź czy nazwa Dell-I jest znana, najlepiej w cmd i ping Dell-I, zobacz czy dostajesz odpowiedzi.

Tyle co mogę wymyślić na tą chwilę.
Masz błąd 40, więc powyższe powinny pasować do Twojego problemu.

0
MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Wejdź w network configuration i pokaż, że masz włączony TCP/IP.
Pokaż konfigurację TCP/IP.

0
  1. Tak jak najbardziej
  2. Dodałem nową regule
  3. http://zapodaj.net/df46b130cac0f.jpg.html
  4. 0% strat, więc jest ok
MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Włącz jeszcze named pipes.
Komunikat mówi właśnie o named pipes, a są wyłączone, nie wiem jednak dlaczego nie używa TCP/IP.

edytowany 1x, ostatnio: michu_cc
0

W SQL Server Network Configuration (32bit) mam pusto.

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Na tym ekranie: http://zapodaj.net/df46b130cac0f.jpg.html

Jest Named Pipes jako disabled, włącz to i spróbuj.

edytowany 2x, ostatnio: michu_cc
0

Tak zrobiłem, zrestartowałem serwer i dalej wyskakuje błąd w aplikacji.

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Jeszcze jedno, zobacz, że w konfiguracji TCP/IP masz Active = true, ale Enabled = false. Powłączaj dla odpowiednich interfejsów, zobacz czy zadziała.

edytowany 1x, ostatnio: michu_cc
0

Niestety dalej nie działa. Trochę tego nie rozumiem, że dla samego Dell-I śmiga, a jak dopiszę /MSSQLSERVER to już nie. Tak samo jest w SQL Management Studio

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Zaraz zaraz...

Podałem Ci:
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

A Ty wpisujesz // czyli w drugą stronę "łamane", wpisz tak jak należy i sprawdź. Jak zadziała to przywróć starą konfigurację.

0

Wpisywałem poprawnie, źle umieściłem w poście. Niestety nie działają wersje ConnectionStringa dopisane z nazwą instancji. Tylko sam ServerName przechodzi

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Spróbuj jeszcze po IP: 127.0.0.1 + po IP w sieci lokalnej czyli 127.0.0.1\MSSQLSERVER,
Szczerze mówiąc to ja tu nic nie widzę, jeżeli masz nadal błąd 40 to będzie to albo problem z rozwiązaniem nazwy albo problem z brakiem nasłuchu na IP:PORT albo problem z firewall-em.

Sprawdź czy nadal jest błąd 40.
Jeszcze jedną rzecz sprawdź, jak podłączysz się Management Studio to Server properties, Connections i tam będzie coś ala Allow remote connections czy coś takiego.

MC
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 8 lat
  • Lokalizacja:Wrocław
  • Postów:127
0

Wpisz jeszcze netstat -an w cmd i sprawdź czy jest nasłuchiwanie na IP:1433, zwłaszcza 127.0.0.1:1433 i LOCAL_IP:1433 (gdzie LOCAL_IP to Twój IP w sieci) albo *:1433 czyli wszystkie.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)