Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Test auf Vorhandensein einer Serverinstanz (https://www.delphipraxis.net/86118-test-auf-vorhandensein-einer-serverinstanz.html)

texmurphy901 9. Feb 2007 11:08

Datenbank: MSSQL • Version: 2006 • Zugriff über: ADO

Test auf Vorhandensein einer Serverinstanz
 
Hallo allerseits,
ich habe da ein kleines Problem:
Ich schreibe ein Programm, welches auf MSSQL Server zugreifen soll. Der Connection-String wird aus einer INI-Datei nachgeladen.
Jetzt suche ich eine Möglichkeit bei Programmstart zu testen, ob die im Connection-String genannte Datenbankinstanz (z.B: RECHNER1/MSSQL1) überhaupt existiert oder erreichbar ist.
Ich habe es bisher vergeblich versucht, das OPEN der ADOQuery in einem try..except zu kapseln aber das Programm schmiert dabei nur ab. Daher möchte ich den Test gern als allererstes nach Programmstart durchführen!!

Gibt es da einen geeigneten Weg?!?!

Danke an alle
Murphy

Alter Mann 9. Feb 2007 17:19

Re: Test auf Vorhandensein einer Serverinstanz
 
Hallo,

es gibt in der NetApi32.Dll die Funktion NetServerEnum, Level 101. Damit bekommtst Du raus ob der angegebene Server
(SV_TYPE_SQLSERVER) überhaupt ein SQLServer ist.

shmia 9. Feb 2007 18:43

Re: Test auf Vorhandensein einer Serverinstanz
 
Hat deine Anwendung auch eine ADOConnection?
Falls nicht: umbauen.
Delphi-Quellcode:
try
   ADOConnection1.Connect;
except
   on E:Eception do
   begin
      E.Message := 'Fehler beim Verbinden mit der Datenbank'#13#10+
         E.Message;
      raise;
   end;
end;
Auf diese Weise kannst du alle Fehler bei der Datenbankverbindung abfangen, ohne allzutief auf Win API Ebene zu gehen.
Wichtig: vor dem Compilieren müssen alle Queries/Tables geschlossen sein. Auch ADOConnection.Cennected muss False sein.

texmurphy901 12. Feb 2007 10:48

Re: Test auf Vorhandensein einer Serverinstanz
 
Hallo,
erstmal besten Dank für die Tipps.
Probiere gleich mal den Tip von shmia aus.

Ich verwende zwar keine ADOConnections sondern ADOQuery (da gibt es kein Connect), aber prinzipiell sollte es ja auch funktionieren.

Murphy

shmia 12. Feb 2007 14:56

Re: Test auf Vorhandensein einer Serverinstanz
 
Zitat:

Zitat von texmurphy901
Ich verwende zwar keine ADOConnections sondern ADOQuery (da gibt es kein Connect)

Das war doch gerade meine Anregung ab sofort eine ADOConnection zu verwenden.
(Also den Sourcecode umbauen)
Nur so hast du die Datenbankverbindung voll unter Kontrolle.
Selbst wenn du nur eine einzige ADOQuery hast, ist dieses Vorgehen von Vorteil.
Wenn du keine explizite ADOConnection verwendest, dann baut die VCL im Hintergrund eine auf und dir fehlt die Kontrolle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz