AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MSSQL 2005 Servernamen ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

MSSQL 2005 Servernamen ermitteln

Ein Thema von Centrii · begonnen am 15. Jul 2008 · letzter Beitrag vom 16. Jul 2008
Antwort Antwort
Seite 1 von 3  1 23      
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#1

MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 09:25
Hallo Wissende,

Ich steh grad vor einem kleinen Problem und hoffe das ihr mir weiter helfen könnt.
Ich suche eine Möglichkeit wie ich alle auf einem PC installierten MSSQL2005 Server ermitteln kann,
bzw. den Servernamen ermitteln kann.
Ich hab ein Programm wo lokal oder remote auf einen PC zugreift und Werte aus einer Tabelle holt.
Nun kann aber sein das auf dem einen PC die SQL2005 Datenbank "DatenbankX","DatenbankY",usw. heißt.
Wenn ich also über try and error suche bis ich den richtigen Namen gefunden hab dauert das ewig.
Deshalb würde ich gern vorher den Namen ermitteln.

Gibts da einen Weg?

Gruß Centrii
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
15. Jul 2008, 09:33
Dieses Thema wurde von "Phoenix" von "VCL / WinForms / Controls" nach "Datenbanken" verschoben.
Erstmal den Weg in die richtige Sparte...
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#3

Re: MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 09:37
Meinst Du die Instanz des SQL-Servers (also ein benannter laufender SQL-Server-Dienst, von dem es mehrere geben kann), oder meinst Du die Datenbank, die innerhalb einer solchen Instanz läuft?

Der Servername ist an und für sich der Name des Servers - also der Name der physikalischen (oder virtuellen) Maschine.

Edit Nachtrag:
Wenn Du die Datenbanken innerhalb einer Instanz meinst, so gibt es die Stored Procedure sp_databases , die Dir eine Liste aller vorhandenen Datenbanken in der Instanz als Tabelle ausgibt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#4

Re: MSSQL 2005 Servernamen (Instanz) ermitteln

  Alt 15. Jul 2008, 09:44
Die Instanz. Wenn ich weiß das es auf dem PC PCName\InstanzX gibt weiß ich auch das es auf dem PC die DatenbankX gibt,
andernfalls PCName\InstanzY, dann muss es DatenbankY sein.
Ich mache das im moment über try and error, das geht aber zu lange, weil ich online Werte aus der Datenbank brauch, wo ich leider im Vorfeld
keine Instanz habe, nur den PCNamen.

Übrigends: Danke für verschieben Phoenix

die Datenbanken unter der Instanz kann ich mir auch aus der Mastertabelle sysObject holen, das ist nicht das Problem.
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#5

Re: MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 10:08
Ah, okay. Das Stichwort dazu ist SQL-DMO (Distributed Management Objects).
Das sind eine Hand voll COM-Objekte mit denen Du sowas machen kannst.

Auf dem SQLServer2 Com-Objekt gibt es eine Methode namens ListInstalledInstances. Die macht genau das
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#6

Re: MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 10:57
vielen Dank Phoenix, ich hab das mal soweit umgesetzt, leider habe ich noch ein Problemchen

Delphi-Quellcode:
var DMOSQL2, Instanzen: OLEVariant;
    i : Integer;
    Instanz: String;
begin
  DMOSQL2:= CreateOleObject('SQLDMO.SQLServer2');
  Instanzen := DMOSQL2.ListInstalledInstances('TBE87'); //mein PCName
  for i:=0 to Instanzen.count do begin
    Instanz := Instanzen.Item[i];
  end;
end;
Ich bekomme keine Instanzen zurück, obwohl ich zwei habe ?
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 11:33
Lokale Firewall installiert? Der Weg über COM ist etwas allergisch bezüglich Firewalls.

Schau mal ob du über die NetServerEnum-Win32API mehr bekommst.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 11:45
Hallo Ruben,

Syntaxfehler bei der Automation sind eine häufige Fehlerursache:

Delphi-Quellcode:
var
  obj, nl: OLEVariant;
  i: Integer;
begin
  obj := CreateOleObject('SQLDMO.SQLServer2');
  nl := obj.ListInstalledInstances();
  for i := 1 to nl.Count do
    ShowMessage(Format('#%d: "%s"', [i, VarToStr(nl.Item(i))]));
end;
Freundliche Grüße

Edit: NameList is one-based ...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 11:52
Zitat von marabu:
Syntaxfehler bei der Automation sind eine häufige Fehlerursache:
Aber nur bei der Schleife. Die Methode ListInstalledInstances kann mit Servernamen (auch eigener Rechnername) aufgerufen werden. Aber u.U. geht man damit dem Firewall-Problem aus dem Weg.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#10

Re: MSSQL 2005 Servernamen ermitteln

  Alt 15. Jul 2008, 11:56
Da rächt es sich, das Delphi nicht case-sensitive ist
Aber der Count-1 war der zweite geschossene Bock.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 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