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
Author: jh
Date: Fri, 08 Jun 2018 23:45
Date: Fri, 08 Jun 2018 23:45
7 lines
2626 bytes
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
Author: J-23
Date: Sun, 10 Jun 2018 10:57
Date: Sun, 10 Jun 2018 10:57
19 lines
2879 bytes
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
Author: jh
Date: Sun, 10 Jun 2018 22:51
Date: Sun, 10 Jun 2018 22:51
8 lines
2131 bytes
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
Author: miab
Date: Mon, 11 Jun 2018 07:25
Date: Mon, 11 Jun 2018 07:25
14 lines
1815 bytes
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
Author: wloochacz
Date: Mon, 11 Jun 2018 15:45
Date: Mon, 11 Jun 2018 15:45
11 lines
1662 bytes
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
Author: wloochacz
Date: Mon, 11 Jun 2018 15:53
Date: Mon, 11 Jun 2018 15:53
38 lines
2746 bytes
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
Author: jh
Date: Tue, 12 Jun 2018 22:27
Date: Tue, 12 Jun 2018 22:27
70 lines
4514 bytes
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
Author: jh
Date: Thu, 28 Jun 2018 22:41
Date: Thu, 28 Jun 2018 22:41
6 lines
1891 bytes
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