Autor Beitrag
NOS1971
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 11:05 
Hallo zusammen,

ich versuche mich zu einem installierten SQL Server 2014 LocalDB zu connecten aber ich bekomme immer die Fehlermeldung das der Server nicht existieren würde oder der Zugriff verweigert würde ... der server läuft wie im taskmanager bei mir zu sehen ist und ich halte mich an die angaben auf docwiki.embarcadero....SQL_Server_(FireDAC) am ende der seite ... was mache ich falsch und noch eine verständnissfrage ... wofür würde ich als beispiel eine eigene instance benötigen ?

Hier mein Code-Auszug:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
 FDConnection : TFDConnection;
begin
 FDConnection := TFDConnection.Create(self);
 FDConnection.Params.Add('DriverID=MSSQL');
 FDConnection.Params.Add('Server=(LocalDB)\\v12.0');
// FDConnection.Params.Add('Integrated Security=true');
// FDConnection.Params.Add('OSAuthent=Yes');
 FDConnection.Params.Add('Database=master');
// FDConnection.Params.Add('ODBCAdvanced=AttachDbFileName=E:\ResultDataBase.mdf');
 FDConnection.Connected := true;
end;


Grüßle und Danke,
Andreas
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Mo 05.05.14 11:23 
Hast Du es mal mit einem einfachen Backslash versucht? Ich bin nicht sicher, ob der Backslash auch unter Delphi escaped werden muss.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 05.05.14 12:01 
Wenn ich sowas auf .Net Seite (eigentlich einfach via connectionstring) mache dann ist der Begriff 'localdb' case sensitive.
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 12:14 
Ich habe es nun mit und ohne doppelten Bachslash probiert und auch LocalDB in alles Variantenversucht ... leider auch das ohne erfolg ... hier mal ein paar Screens vom SQL Server info und vom Fehler an sich.

Grüße,
Andreas
Einloggen, um Attachments anzusehen!
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 05.05.14 12:21 
Delphi/Firedac ist leider nicht meine Welt aber du hast eine benannte Instanz in der lokalDB gestartet und scheinbar gibst du die nirgendwo an. Das führt eigentlich dazu das eine neue versucht wird zu starten. Da das schonmal dauern kann läufst du vielleicht gerade einfach nur beim connecten in einen Timeout und wenn es funktioniert würde dann würdest du vermutlich nicht an der von dir erhofften Instanz hängen.

In einem klassischen Connectionstring würde man das dann so angeben "Server=(localdb)\MSSQLLocalDB"

Edit: Ignorier das. Ich hab übersehen das MSSQLLocalDB der Standardname für eine automatische Instanz ist. Ich dachte du hättest die explizit so benannt.

Aber ich sehe du benutzt bereits SQL Server 2014 die hat die Versionsnummer v12 nicht mehr v11


Zuletzt bearbeitet von Ralf Jansen am Mo 05.05.14 12:39, insgesamt 1-mal bearbeitet
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 12:38 
Wie würde denn ein Connectionstring für meine DB aussehen ? Habe bisher nur Erfahrungen im Bereich SQLite3 gesammelt und bin im Client/Server Bereich ein ziemlicher Rookie.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 05.05.14 12:43 
Hab den vorherigen Beitrag überarbeitet vielleicht war das schon das Problem.

Ein Connectionstring zur automatischen Instanz sollte so
ausblenden Quelltext
1:
Server=(localdb)\v12.0;Integrated Security=true;					

aussehen. Zu einer benannten Instanz halt
ausblenden Quelltext
1:
Server=(localdb)\MeinLieberInstanzname;Integrated Security=true;					


Aber das sind klassische OLEDB Connectionstrings (wie die auch vom native SQL Server Client benutzt werden würden) was FireDac damit anstellt (oder die überhaupt versteht) weiß ich nicht.
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 12:52 
Also ich habe den Code mal entsprechend geändert mit dem gleichen Ergebnis wie vorher

ausblenden Delphi-Quelltext
1:
2:
 FDConnection.ConnectionString := 'DriverID=MSSQL;Server=(localdb)\v12.0;Integrated Security=true;';
 FDConnection.Connected := true;


Außerdem muss ich immer wieder den SQL Server von hand starten ... also SQLLocalDB start in der Console aufrufen ... damit hängt das aber nicht zusammen ... oder ?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 05.05.14 13:06 
Solange er läuft während du dich versuchst dahin zu connecten reicht das ;)
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 13:14 
Ok ...

leider bringt das ganze keine Änderung ... ich bin total ratlos
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 15:01 
Hier mal ein Auszug aus dem Connection Manager
================================
Connection definition parameters
================================
ODBCAdvanced=
Server=(localdb)\v12.0
ConnectionDef=SQL LocalDB 2014
DriverID=MSSQL
ODBCAdvanced=
Database=master
Server=localdb)\v12.0
OSAuthent=Yes
Language=
Name=SQL LocalDB 2014
================================
FireDAC info
================================
Tool = RAD Studio XE6
FireDAC = 10.0.1 (Build 69712)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client info
================================
Loading driver MSSQL ...
Loading odbc32.dll driver manager
Creating ODBC environment handle
Searching for ODBC driver ...
Checking for ODBC driver [SQL SERVER NATIVE CLIENT 11.0] ...
Checking for ODBC driver [SQL SERVER NATIVE CLIENT 10.0] ...
Checking for ODBC driver [SQL NATIVE CLIENT] ...
Checking for ODBC driver [SQL SERVER] ...
Found [SQL Server]
================================
Session info
================================
Failed to connect to DBMS !
[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server existiert nicht oder Zugriff verweigert.


Kann man daraus was erkennen ?
Quitzlinga
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60
Erhaltene Danke: 2

Win XP
Delphi 2007 Prof. Codegear Win32
BeitragVerfasst: Mo 05.05.14 15:15 
Hi,

musst Du evt noch Username und Passwort zum anmelden mit angeben ?

MfG

Quitzlinga
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 15:17 
Sollte eigentlich nicht aber habe ich auch schon ausprobiert ... leider ohne Erfolg :-(
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mo 05.05.14 15:36 
user profile iconNOS1971 hat folgendes geschrieben Zum zitierten Posting springen:
Hier mal ein Auszug aus dem Connection Manager
================================
Connection definition parameters
================================
ODBCAdvanced= Eintrag doppelt?
Server=(localdb)\v12.0 Eintrag doppelt?
ConnectionDef=SQL LocalDB 2014
DriverID=MSSQL
ODBCAdvanced= Eintrag doppelt?
Database=master
Server=localdb)\v12.0 Eintrag doppelt, allerdings ohne "(" am Anfang?
OSAuthent=Yes
Language=
Name=SQL LocalDB 2014
================================
FireDAC info
================================
Tool = RAD Studio XE6
FireDAC = 10.0.1 (Build 69712)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client info
================================
Loading driver MSSQL ...
Loading odbc32.dll driver manager
Creating ODBC environment handle
Searching for ODBC driver ...
Checking for ODBC driver [SQL SERVER NATIVE CLIENT 11.0] ...
Checking for ODBC driver [SQL SERVER NATIVE CLIENT 10.0] ...
Checking for ODBC driver [SQL NATIVE CLIENT] ...
Checking for ODBC driver [SQL SERVER] ...
Found [SQL Server]
================================
Session info
================================
Failed to connect to DBMS !
[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server existiert nicht oder Zugriff verweigert.


Kann man daraus was erkennen ?
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 15:47 
Merkwürdig ... sind aber nur einmal angegeben ... kann ich den fehler irgendwie näher eingrenzen ?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 05.05.14 17:54 
Zitat:
Checking for ODBC driver [SQL SERVER NATIVE CLIENT 11.0] ...


Denn Treiber scheint er nicht zu finden. Und denn ODBC Treiber den er findet weiß sicher nichts von localdb Datenbanken.
In der von dir verlinkten Anleitung wird das auch erwähnt

Zitat:
SQL Server Native Client 11.0 als Verbindung für LocalDB.


Also passenden Treiber nachinstallieren. Da ich nicht weiß wie Delphi die Treiber durchtestet solltest du auch explizit die 11er Version des native Clients nehmen und nicht die zum Sql Server 2014 passenden 12er Version. Einfach mal aus dem Logoutput geschlossen sieht das sehr hardcodiert aus.

Für diesen Beitrag haben gedankt: NOS1971
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Mo 05.05.14 18:30 
Werde ich nachher mal checken ... ist im moment auch noch hardgecodet weil ich erste erfahrungen mit Client/Server sammeln wollte um von SQLite auf SQL LocalDB umzustellen ... gibt es auch eine möglichkeit von delphi aus den sql server zu starten falls er nicht läuft oder den sql server beim installen zu einzustellen das er permanent läuft ?

Grüße und vielen Dank,
Andreas
NOS1971 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 193

Windows 8.1 PRO 64 Bit
Delphi XE7 Professional
BeitragVerfasst: Di 06.05.14 14:31 
SO ...

hat super geklappt ... neben dem ODBC Treiber fehlte auch noch der Native Client und mit dem Server=(localdb)\v12.0 klappt es auch nicht sondern mit Server=(localdb)\MSSQLLocalDB

Wie man sieht starte ich den SQL Server nun von Hand da er nicht dauerhaft läuft ... wie löst man das normalerweise ? Schauen ob installed und Pfad etc aus Registry lesen und dann starten ?

Hier mal der Code den ich nun nutze:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
var
 FDConnection : TFDConnection;
 E: Exception;
begin
 ShellExecute(Application.Handle,'open','C:\Program Files\Microsoft SQL Server\120\Tools\Binn\SqlLocalDB.exe','start','',SW_ShowNormal);
 FDConnection := TFDConnection.Create(self);
 FDConnection.DriverName := 'MSSQL';
 FDConnection.ConnectionName := 'MTWS';
 FDConnection.Params.Add('DriverID=MSSQL');
 FDConnection.Params.Add('Server=(localdb)\MSSQLLocalDB');
 FDConnection.Params.Add('Integrated Security=true');
 FDConnection.Params.Add('Database=master');
 FDConnection.Params.Add('OSAuthent=Yes');
 FDConnection.Params.Add('MARS=No');
 try
  FDConnection.Connected := true;
 except
  begin
   ShowMessage(E.Message);
   exit;
  end;
 end;
 // connected
 ShowMessage('Connection succesfully established!');
 Sleep(1000);
 try
  FDConnection.Connected := false;
 except
  begin
   ShowMessage(E.Message);
   exit;
  end;
 end;
 // disconnected
 ShowMessage('Connection succesfully closed!');