Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Logische Datenbank Name (https://www.delphipraxis.net/124100-logische-datenbank-name.html)

Gregorius 14. Nov 2008 10:33

Datenbank: MsSQL • Zugriff über: odbc

Logische Datenbank Name
 
Logische Datenbank Name

Eine Abfrage DIREKT auf dem SQL-Server (MsSQL)

Wie

SQL-Code:
SELECT FILE_NAME (1) as DataBaseName
Oder
SQL-Code:
SELECT name from sysfiles where fileid = 1
liefert als Antwort logischen Datenbank-Name.


Leider funktioniert diese Abfrage im Delphi Program wo ich per TQuery den logischen Namen abfragen möchte nicht. Solche TQuery mit dem SQL-Text:

SQL-Code:
SELECT name from sysfiles where fileid = 1
liefert kein Ergebnis.

Ich benutze BDE /ODBC.

Wie kann ich per TQuery Abfrage den logischen Datenbank Namen erfahren?
Wohl gemerkt ist das nicht zwingend der gleiche Datenbank- Name wie auf dem SQL-Server in dem Zweig

Datenbanken sichtbar ist. Erstellt man z.B. eine Datenbank mit dem Namen XXX und spielt „drüber“ ein Backup YYY wird der logische Name von dem Backup übernommen.

.

Bernhard Geyer 14. Nov 2008 11:02

Re: Logische Datenbank Name
 
Ich Tipp mal darauf das die BDE die Ergebnisspalte nicht erkennt oder über ODBC die Spalte nicht übertragen wird(Ok, ich sag jetzt nix das man die BDE nicht verwenden sollte :-)).
Hast du es mit ADOExpress/dbGo und TAdoQuery probiert was dort passiert?

Gregorius 14. Nov 2008 11:16

Re: Logische Datenbank Name
 
Ich muss TQuery benutzen. Ich habe gehofft, dass man es aus irgendeinen anderen System-Tabelle abfragen kann.

nahpets 14. Nov 2008 12:10

Re: Logische Datenbank Name
 
Hallo,

mach über die BDE mal ein
SQL-Code:
SELECT * from sysfiles where fileid = 1
und Du wirst feststellen, die Tabelle hat garkeine Spalte Name (für die BDE). Da wird irgendwas "unterwegs" gemappet oder so, dass bei der BDE nicht ankommt. Über Ado klappt das ja.
Wobei: Der Zugriff auf die Systemtabellen im Information_Schema ist über die BDE auch nicht (zwingend) möglich. Möchte hier nicht ausschließen, dass die Datenbank Feldtypen verwendet, die von der BDE nicht unterstützt werden.

Das ist zwar ägerlich, aber nicht hoffnungslos :wink:

So geht's auch über die BDE:

SQL-Code:
SELECT cast(name as Varchar(80)) from sysfiles

Gregorius 14. Nov 2008 12:46

Re: Logische Datenbank Name
 
Du bist ein Genie !!!

Super, morgen werde ich es ausprobieren, aber das sieht sehr gut aus (warum komme ich seblst nicht auf solche Idee?, hahahaha)

Also, Danke

tomsson74 14. Nov 2008 13:04

Re: Logische Datenbank Name
 
Wenn mich nicht alles täuscht sind die Systemtabellen beim SQL-Server einem anderen Schema zugeordnet (sys).

Würde denn eventuell sowas funktionieren ?


Delphi-Quellcode:
SELECT name from sys.sysfiles where fileid = 1
/Thomas

Gregorius 14. Nov 2008 13:40

Re: Logische Datenbank Name
 
Das habe ich schon natürlich vorher ausprobiert (mit dem SYS.)

Funktioniert leider nicht

mkinzler 14. Nov 2008 13:46

Re: Logische Datenbank Name
 
Ja, die BDE ist doch was Dolles :stupid:
Ich würde hier eher ADO verwenden

Bernhard Geyer 16. Nov 2008 21:41

Re: Logische Datenbank Name
 
Zitat:

Zitat von mkinzler
Ja, die BDE ist doch was Dolles :stupid:
Ich würde hier eher ADO verwenden

Aber nein. Nicht wieder einer dieser der nicht lesen kann. Der Fragesteller hat doch geschrieben: "Ich muss TQuery benutzen". Und wir sollten Ihn hier helfen und nicht wieder diese Diskussion über ein totes System führen das manch einer nicht loslasen will :mrgreen:

@Fragesteller: WIESO muss die BDE verwendet werden? ist dem Fragesteller klar das die BDE schon längst keine Aktive Entwicklung mehr erfährt und eigentlich schon mit D2009 entgültig sterben sollte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.

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