| Autor | Beitrag | 
| NOS1971 
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 10: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:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 
 | varFDConnection : TFDConnection;
 begin
 FDConnection := TFDConnection.Create(self);
 FDConnection.Params.Add('DriverID=MSSQL');
 FDConnection.Params.Add('Server=(LocalDB)\\v12.0');
 FDConnection.Params.Add('Database=master');
 FDConnection.Connected := true;
 end;
 |  Grüßle und Danke,
 Andreas | 
|  | 
| WasWeißDennIch 
          Beiträge: 653
 Erhaltene Danke: 160
 
 
 
 
 | 
Verfasst: Mo 05.05.14 10: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 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mo 05.05.14 11:01 
 
Wenn ich sowas auf .Net Seite (eigentlich einfach via connectionstring) mache dann ist der Begriff 'localdb' case sensitive. | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 11: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 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mo 05.05.14 11: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 11:39, insgesamt 1-mal bearbeitet
 | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 11: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 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mo 05.05.14 11:43 
 
Hab den vorherigen Beitrag überarbeitet vielleicht war das schon das Problem.
 Ein Connectionstring zur automatischen Instanz sollte so
 		                       Quelltext 
 									| 1:
 | Server=(localdb)\v12.0;Integrated Security=true;					 |  aussehen. Zu einer benannten Instanz halt
 		                       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  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 11:52 
 
Also ich habe den Code mal entsprechend geändert mit dem gleichen Ergebnis wie vorher
 		                       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 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mo 05.05.14 12:06 
 
Solange er läuft während du dich versuchst dahin zu connecten reicht das   | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 12:14 
 
Ok ...
 leider bringt das ganze keine Änderung ... ich bin total ratlos
 | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 14: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 
          Beiträge: 60
 Erhaltene Danke: 2
 
 Win XP
 Delphi 2007 Prof. Codegear Win32
 
 | 
Verfasst: Mo 05.05.14 14:15 
 
Hi,
 musst Du evt noch Username und Passwort zum anmelden mit angeben ?
 
 MfG
 
 Quitzlinga
 | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 14:17 
 
Sollte eigentlich nicht aber habe ich auch schon ausprobiert ... leider ohne Erfolg   | 
|  | 
| baumina 
          Beiträge: 305
 Erhaltene Danke: 61
 
 Win 7
 Delphi 10.2 Tokyo Enterprise
 
 | 
Verfasst: Mo 05.05.14 14:36 
 
	  |  NOS1971 hat folgendes geschrieben  : |  	  | 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  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 14:47 
 
Merkwürdig ... sind aber nur einmal angegeben ... kann ich den fehler irgendwie näher eingrenzen ? | 
|  | 
| Ralf Jansen 
          Beiträge: 4708
 Erhaltene Danke: 991
 
 
 VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
 
 | 
Verfasst: Mo 05.05.14 16: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  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Mo 05.05.14 17: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  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Di 06.05.14 13: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:
 												| 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:
 
 | varFDConnection : 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;
 ShowMessage('Connection succesfully established!');
 Sleep(1000);
 try
 FDConnection.Connected := false;
 except
 begin
 ShowMessage(E.Message);
 exit;
 end;
 end;
 ShowMessage('Connection succesfully closed!');
 |  | 
|  |