🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi.bazy-danych
8 messages
8 total messages Started by jh Fri, 08 Jun 2018 23:45
FireDAC - błąd połączenia
#82945
Author: jh
Date: Fri, 08 Jun 2018 23:45
7 lines
2626 bytes
Miałem nieco przerwy w skrobaniu w Delphi. Spłodziłem aplikację, która jest oparta o Delphi Tokyo i FireDAC + MS SQL 2016. Nie mam problemu z nią przy łączeniu się w moim środowisku, u klienta oczywiście nie działa. U mnie wszystko jest na Windows 10 Pro, MS SQL 2017 Developer, łączę się natywnym klientem 11.0. 

Problemowa maszyna to Windows 7, serwer na MS Windows Server bodajże 2016, MS SQL 2016, wgrany natywny klient (aplikacja ma wybór sterownika, wybierany jest natywny). Połączenie przy korzystaniu z windowsowych Źródeł danych działa bezproblemowo, moja aplikacja nie łączy się. Wyklikałem więc taką miniaturę do banalnego przetestowania połączenia. Obrazek ze zrzutami, kodem i komunikatem błędu jest tu:
https://1drv.ms/u/s!ApoUnQze59lO3QZfMfInclbci7Xl
Oczywiście ta banalna aplikacja u mnie działa, u klienta występuje błąd: [FireDAC][Phys][ODBC][Microsoft][Menedżer sterowników ODBC] Nie można odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego. No i mam kłopot - sterownik jest podany, w tej właściwej aplikacji klient może zmienić też na dowolny inny. Podpowiedzcie, gdzie szukać przyczyny błędu?

jh
Re: FireDAC - błąd połączenia
#82946
Author: J-23
Date: Sun, 10 Jun 2018 10:57
19 lines
2879 bytes
W dniu 09.06.2018 o 01:45, jh pisze:
> Miałem nieco przerwy w skrobaniu w Delphi. Spłodziłem aplikację, która jest oparta o Delphi Tokyo i FireDAC + MS SQL 2016. Nie mam problemu z nią przy łączeniu się w moim środowisku, u klienta oczywiście nie działa. U mnie wszystko jest na Windows 10 Pro, MS SQL 2017 Developer, łączę się natywnym klientem 11.0.
> 
> Problemowa maszyna to Windows 7, serwer na MS Windows Server bodajże 2016, MS SQL 2016, wgrany natywny klient (aplikacja ma wybór sterownika, wybierany jest natywny). Połączenie przy korzystaniu z windowsowych Źródeł danych działa bezproblemowo, moja aplikacja nie łączy się. Wyklikałem więc taką miniaturę do banalnego przetestowania połączenia. Obrazek ze zrzutami, kodem i komunikatem błędu jest tu:
> https://1drv.ms/u/s!ApoUnQze59lO3QZfMfInclbci7Xl
> Oczywiście ta banalna aplikacja u mnie działa, u klienta występuje błąd: [FireDAC][Phys][ODBC][Microsoft][Menedżer sterowników ODBC] Nie można odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego. No i mam kłopot - sterownik jest podany, w tej właściwej aplikacji klient może zmienić też na dowolny inny. Podpowiedzcie, gdzie szukać przyczyny błędu?
> 

1. Ty instalowałeś ten serwer, jesli tak to uruchom do niego zdalny dostęp
2. Robi się to tak (Pisze na przykładzie SQL Server Management Studio 2017)

- Zaloguj się jako admin
- kliknij prawym na nazwę serwera potem kliknij PROPERTIES -> 
CONNECTIONS -> ALLOW REMOTE CONNECTIONS TO THIS SERVER

To ostatnie jest do zaznaczenia "ptaszkiem"

Pozdrawiam
J-23
Re: FireDAC - błąd połączenia
#82947
Author: jh
Date: Sun, 10 Jun 2018 22:51
8 lines
2131 bytes
> W dniu 09.06.2018 o 01:45, jh pisze:
Połączenie przy korzystaniu z windowsowych Źródeł danych działa bezproblemowo

> 1. Ty instalowałeś ten serwer, jesli tak to uruchom do niego zdalny dostęp

Przecież napisałem, że połączenie przez Windowsowe Źródła danych działa. Zresztą cała firma łączy się z tym serwerem, tyle, że aplikacją korzystającą z ODBC. Ja doinstalowałem natywnego klienta i chcę łączyć się nim.

jh
Re: FireDAC - błąd połączenia
#82948
Author: miab
Date: Mon, 11 Jun 2018 07:25
14 lines
1815 bytes
W dniu 11-06-2018 o 00:51, jh pisze:
>> W dniu 09.06.2018 o 01:45, jh pisze:
> Połączenie przy korzystaniu z windowsowych Źródeł danych działa bezproblemowo
> 
>> 1. Ty instalowałeś ten serwer, jesli tak to uruchom do niego zdalny dostęp
> 
> Przecież napisałem, że połączenie przez Windowsowe Źródła danych działa. Zresztą cała firma łączy się z tym serwerem, tyle, że aplikacją korzystającą z ODBC. Ja doinstalowałem natywnego klienta i chcę łączyć się nim.

Weź tu poczytaj:
https://docs.microsoft.com/en-us/sql/relational-databases/native-client/sql-server-native-client?view=sql-server-2017
https://docs.microsoft.com/en-us/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-2017
bo dla 2017 trochę M$ zamącił.

miab
Re: FireDAC - błąd połączenia
#82949
Author: wloochacz
Date: Mon, 11 Jun 2018 15:45
11 lines
1662 bytes
W dniu 2018-06-11 o 09:25, miab pisze:
[ciach]

> bo dla 2017 trochę M$ zamącił.
Nie, dlaczego?
Po prostu OLEDB jest już nagle undeprecated :D

A poza tym, on o 2016 Ty o 2017, sam nie wiem kto zbłądził...

-- 
wloochacz
Re: FireDAC - błąd połączenia
#82950
Author: wloochacz
Date: Mon, 11 Jun 2018 15:53
38 lines
2746 bytes
W dniu 2018-06-09 o 01:45, jh pisze:
> Oczywiście ta banalna aplikacja u mnie działa, u klienta występuje błąd: [FireDAC][Phys][ODBC][Microsoft][Menedżer sterowników ODBC] Nie można odnaleźć nazwy źródła danych, a nie ma podanego sterownika domyślnego. 

Pokaż Connection InfoReport.
http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Comp.Client.TFDCustomConnection.GetInfoReport

A żeby zobaczyć te Twoje obrazki, to ja się logował na pewno nie będę w MS.
Sorry.

> No i mam kłopot - sterownik jest podany, w tej właściwej aplikacji klient może zmienić też na dowolny inny. Podpowiedzcie, gdzie szukać przyczyny błędu?
Gdzie szukać?
W Twoim kodzie :)

Tak się zastanawiam - skoro korzystasz z MSSQLa to na cholerę user może 
sobie cokolwiek wybierać ze sterownikami?
Ma działać ze SQL Server Nativeclient 11.0 i koniec.
FireDAC dobiera sterownik automagicznie.
Znajduje to co ma w systemie.
Np. jeśli nie ma SQL Server Nativeclient to będzie to Generic MSSQL.
Kolejna sprawa, to musisz pamiętać o tym, że FireDAC w połączeniu z 
MSSQL korzysta z podsystemu ODBC.
Koniec i kropka.

Reasumując;
1. Ma być zainstalowany SQL Server NativeClient 11 for ODBC
2. Ma być ten sterownik dostępny; nie jestem pewien, czy w środowisku 
domenowym nie zahacza to o jakieś "uprawnienia"...

A coś mi tam tak śmierdzi, że podajesz niepoprawny ConnectionString dla 
FireDAC.
Komunikat błędu sugeruje, że łączysz się przez ODBC po nazwie połączenia 
w ODBC (tzw. DSN właśnie) i nie można go w systemie odnaleźć.
A to jest z gruntu złe rozwiązanie.

Pokaż Connection InfoReport, będziemy wiedzieć więcej.

-- 
wloochacz
Re: FireDAC - błąd połączenia
#82951
Author: jh
Date: Tue, 12 Jun 2018 22:27
70 lines
4514 bytes
W dniu poniedziałek, 11 czerwca 2018 17:53:18 UTC+2 użytkownik wloochacz napisał:
> Pokaż Connection InfoReport.

Nie mam tam stałego dostępu, muszę umówić się na zdalną sesję, wtedy zrobię.

> A żeby zobaczyć te Twoje obrazki, to ja się logował na pewno nie będę w MS.
> Sorry.

Chyba nie trzeba się logować...
 
> Tak się zastanawiam - skoro korzystasz z MSSQLa to na cholerę user może 
> sobie cokolwiek wybierać ze sterownikami?
> Ma działać ze SQL Server Nativeclient 11.0 i koniec.
> FireDAC dobiera sterownik automagicznie.
> Znajduje to co ma w systemie.
> Np. jeśli nie ma SQL Server Nativeclient to będzie to Generic MSSQL.
> Kolejna sprawa, to musisz pamiętać o tym, że FireDAC w połączeniu z 
> MSSQL korzysta z podsystemu ODBC.
> Koniec i kropka.

Pewnie masz rację. Coś mi się po głowie kołacze, że miałem taką sytuację, gdzie zwracane dane powodowały błędy, albo też zapytania nie wchodziły, dopóki nie wymusiłem NativeClienta. Stąd w opcjach programu, o ile user jest adminem, można wybrać sterownik.
 
> Reasumując;
> 1. Ma być zainstalowany SQL Server NativeClient 11 for ODBC

Jest.

> 2. Ma być ten sterownik dostępny; nie jestem pewien, czy w środowisku 
> domenowym nie zahacza to o jakieś "uprawnienia"...

Nie powinno. Instalacja jest z msi, ale samo działanie nie wymaga żadnej konfiguracji. Przynajmniej dotąd do opcji instalatora dorzucałem klienta natywnego w zależności do wersji OS (x64/x86) i zawsze działało. Pierwszy raz trafiłem na taki kłopot.
 
> A coś mi tam tak śmierdzi, że podajesz niepoprawny ConnectionString dla 
> FireDAC.
> Komunikat błędu sugeruje, że łączysz się przez ODBC po nazwie połączenia 
> w ODBC (tzw. DSN właśnie) i nie można go w systemie odnaleźć.
> A to jest z gruntu złe rozwiązanie.

Czyszczę parametry połączenia i dodaję ręcznie jedynie to, że sterownik to MSSQL, jaka baza, serwer, user i pass lub łączenie po autentykacji Windows. 

procedure TDM.CreateConnection(AConnection: TFDCustomConnection);
var
  oList: TStringList;
begin
  dlMSSQL.ODBCDriver := AppSettings.ODBCDriver;
  oList := TStringList.Create;
  try
    oList.Add('DriverID=MSSQL');
    oList.Add('Server=' + AppSettings.DBServer);
    oList.Add('ApplicationName=' + APP_NAME_POLISH);
    oList.Add('Database=' + AppSettings.DBName);
    oList.Add('Pooled=False');
    oList.Add('Language=POLISH');
    oList.Add('MARS=YES');
    oList.Add('VariantFormat=vfString');
    oList.Add('ExtendedMetadata=True');
    if AppSettings.DBOSAuth then
      oList.Add('OSAuthent=Yes')
    else begin
      oList.Add('OSAuthent=No');
      oList.Add('User_Name=' + AppSettings.DBLogin);
      oList.Add('Password=' + AppSettings.DBPass);
    end;
    AConnection.Params.Assign(oList);
  finally
    oList.Free;
  end;
end;

jh
Re: FireDAC - błąd połączenia
#82952
Author: jh
Date: Thu, 28 Jun 2018 22:41
6 lines
1891 bytes
W dniu poniedziałek, 11 czerwca 2018 17:53:18 UTC+2 użytkownik wloochacz napisał:
> gdzie szukać przyczyny błędu? Gdzie szukać?

Cóż, dorobiłem checkboxa - jak klient chce podać sterownik, to może, jak nie, to w firedacowym linku do MSSQL jest on wyczyszczony. Działa bez podawania sterownika. Cóż, trochę to dla mnie dziwaczne, ale "klyent zadowolony" ;)

jh
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads